6

これに関する情報は見つかりませんでしたが、ActionBarSherlockのタブをプログラムで切り替えるにはどうすればよいですか?

通常、ビューを切り替えたい場合は、次のようなものを使用します。

Intent intentSecondView = new Intent(this, SecondView.class);
this.startActivity(intentSecondView);

ただし、タブのビューはフラグメントであるため、これは明らかに機能しません。

では、ActionBarSherlockを使用するときにコードでタブを切り替える方法はありますか?


これは私が現在タブ付きのアクションバーを追加する方法です。

私のonCreateメソッドには、次のものがあります。

    mViewPager = new ViewPager(this);
    mViewPager.setId(R.id.pager);

    setContentView(mViewPager);
    ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mTabsAdapter = new TabsAdapter(this, mViewPager);

    mTabsAdapter.addTab(
            bar.newTab().setText("Fragment 1"),
            MyFragment1.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("Fragment 2"),
            MyFragment2.class, null);

タブを作成するためにAndroidManifestファイルに何も追加しませんでした。それはすべてプログラムによるものです。

4

2 に答える 2

21

actionBar.setSelectedNavigationItem(x)を呼び出してみてください。

int position = 1;
getSupportActionBar().setSelectedNavigationItem(position);
于 2012-07-23T09:45:26.747 に答える
0

私のアプリには、写真のアルバムを持つ 1 つのタブ フラグメントがあります。ユーザーが画像の 1 つをクリックすると、その画像が他のタブ フラグメントの ViewPager に表示され、setCurrentTabByTag() でそのタブに自動的に切り替わります。

public class EditAlbumTabs extends SherlockFragmentActivity {
   TabHost mTabHost;
   TabsAdapter mTabsAdapter;

   public void onPagerPositionSet(int pagerPosition, String[] imageUrls) {
        FragmentFlash fragmentFlash = (FragmentFlash)mTabsAdapter.getFragment("flash");
        if (fragmentFlash != null) {
           fragmentFlash.pagerPositionSet(pagerPosition, imageUrls);
           **mTabHost.setCurrentTabByTag("flash");**
        }
   }

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fragment_tabs_pager);
    mTabHost = (TabHost)findViewById(android.R.id.tabhost);
    mTabHost.setup();

    mViewPager = (ViewPager)findViewById(R.id.pager);
    mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);
    mTabsAdapter.addTab(mTabHost.newTabSpec("album").setIndicator("Album"),
            FragmentAlbumFlashum.class, null);
    mTabsAdapter.addTab(mTabHost.newTabSpec("flash").setIndicator("Flash"),
            FragmentFlash.class, null);
}
于 2012-11-01T20:22:31.990 に答える