2

重複の可能性:
他のアクティビティを開始するときにTabhostを保持する方法

「tab1」から新しいアクティビティを起動しようとしていますが、アクティビティが画面全体に開きます。インテントを起動したタブで新しいアクティビティを開く必要があります。

4

2 に答える 2

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 に答える
0

次の2つの方法で実装できます。

  1. タブの内容をアクティビティではなくActivityGroupとして設定し、ナビゲーションに従ってActivityGroupのビューを変更します。 TabGroupActivity-startChildActivity-機能してい ませんが、ActivityGroupは非推奨であるため、2番目のメソッドを使用することをお勧めします。
  2. フラグメントを使用してTabBarを実装します。

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

于 2012-05-18T06:51:07.823 に答える