在Android中的指定标签中启动新活动

时间:2012-05-18 06:30:34

标签: android

  

可能重复:
  how to Keep Tabhost when start other activity

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

2 个答案:

答案 0 :(得分:0)

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

  1. 将Tabs的内容设置为ActivityGroup not activity,并根据导航更改ActivityGroup的视图。 TabGroupActivity - startChildActivity - not working 但是不推荐使用ActivityGroup,所以我建议使用第二种方法。
  2. 使用片段实施TabBar。
  3. http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/

答案 1 :(得分: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);
    }

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