gpt4 book ai didi

android - 没有 TabActivity、ActivityGroup 或 LocalActivityManager 的 TabHost

转载 作者:行者123 更新时间:2023-11-29 18:12:25 24 4
gpt4 key购买 nike

我正在创建一个在主屏幕上具有三个选项卡的应用程序。我将每个选项卡的内容设置为单独的 Activity 。我使用 Activity 而不是 fragment 的原因是因为在其中一个选项卡中我需要能够拥有 fragment 并且不支持嵌套 fragment 。

起初,我正在扩展 TabActivity 来这样做,但后来我意识到它已被弃用,所以我开始四处寻找。我发现有人建议在这里使用 ActivityGroup,但是......这也被弃用了。

StackExchange 上针对我遇到的问题的所有解决方案似乎都包含已弃用的功能。例如,Android: TabHost without TabActivity , 和 Android - Tabhost working in Activity class

拥有 TabHost 并允许选项卡包含 fragment 而不使用已弃用功能的正确方法是什么?

下面是我目前拥有的

import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class HomeTabs extends ActivityGroup {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

TabHost host = (TabHost)findViewById(android.R.id.tabhost);
LocalActivityManager mlam = new LocalActivityManager(this, false);
mlam.dispatchCreate(savedInstanceState);
host.setup(mlam);

TabSpec spec = host.newTabSpec("Home");
spec.setContent(new Intent(this, HomeActivity.class));
spec.setIndicator("Home");
host.addTab(spec);

spec = host.newTabSpec("Browse");
spec.setContent(new Intent(this, BrowseActivity.class));
spec.setIndicator("Browse");
host.addTab(spec);

spec = host.newTabSpec("About");
spec.setContent(new Intent(this, AboutActivity.class));
spec.setIndicator("About");
host.addTab(spec);
}
}

最佳答案

What is the correct way to have a TabHost and allow the tabs to contain Fragments without using deprecated functionality?

将 View 放在选项卡中,无论是作为 FrameLayout 的直接子级静态地放在布局中在TabHost里面,或动态地通过 setContent() 的变体这需要 TabContentFactory .据我所知,这些 View 可以获取管理 fragment 的东西(例如 ViewPager ),或者可能直接通过 <fragment> 自己 fragment 。元素。

或者,不要使用 TabHost .在操作栏中使用选项卡,使用 ActionBarSherlock 实现向后兼容。或者,使用 ViewPager .或者,使用 ViewFlipper和一个 TabWidget (尽管有文档,但似乎对 TabHost 没有实际依赖)。或者,使用 ViewFlipper和一些其他控制机制在“选项卡”之间切换。

或者,去掉“选项卡内容中的 fragment ”。

关于android - 没有 TabActivity、ActivityGroup 或 LocalActivityManager 的 TabHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com