2

可能重复:
如何在开始其他活动时保留 Tabhost

我正在尝试从“tab1”启动新活动,但该活动在整个屏幕上打开。我需要在触发意图的选项卡中打开新活动。

4

2 回答 2

0

您可以通过两种方式实现它:

  1. 将 Tabs 的内容设置为 ActivityGroup 而不是 Activity,并根据导航更改 ActivityGroup 的视图。 TabGroupActivity - startChildActivity - 不工作 但 ActivityGroup 已被弃用,所以我建议使用第二种方法。
  2. 使用片段来实现 TabBar。

http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/

于 2012-05-18T06:51:07.823 回答
0

将此代码用于操作栏并在选项卡的片段中设置活动。

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        appContext = getApplicationContext();

       //ActionBar
        ActionBar actionbar = getActionBar();
        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        ActionBar.Tab PlayerTab = actionbar.newTab().setText("Fragment A");
        ActionBar.Tab StationsTab = actionbar.newTab().setText("Fragment B");

        Fragment PlayerFragment = new AFragment();
        Fragment StationsFragment = new BFragment();

        PlayerTab.setTabListener(new MyTabsListener(PlayerFragment));
        StationsTab.setTabListener(new MyTabsListener(StationsFragment));

        actionbar.addTab(PlayerTab);
        actionbar.addTab(StationsTab);

并将此类用于选项卡。

class MyTabsListener implements ActionBar.TabListener {
    public Fragment fragment;

    public MyTabsListener(Fragment fragment) {
        this.fragment = fragment;
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        Toast.makeText(StartActivity.appContext, "Reselected!", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ft.replace(R.id.fragment_container, fragment);
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        ft.remove(fragment);
    }

希望它对你有用。谢谢..

于 2012-05-18T07:15:02.060 回答