1

NavigationDrawer と ActionBarDrawerToggle を利用する FragmentActivity (HomeFragment) があります。この FragmentActivity をユーザーに最初に表示される FragmentActivity としてエミュレーターを実行すると、ActionBar が表示され、NavigationDrawer が完全に機能します。ここから、AccountFragment に移動するメニュー項目 (「アカウント」) を選択できます。私の AccountFragment アクティビティは、ViewPager を使用して、基本的なアカウント情報のフラグメントと、仲間/連絡先のリストの別のフラグメントとの間をスワイプします。My BuddiesFragment は、ナビゲーション タブをアクションバーに追加して、リスト、グループ、またはお気に入りから仲間を選択することになっています。これらのタブをアクション バーの下に表示できません。

エミュレータを起動して BuddiesFragment に直接アクセスし、HomeFragment からこのフラグメントへの移動をスキップすると、期待どおりにナビゲーション タブがアクションバーの下に表示されることに注意してください。あるユースケースが失敗し、他のユースケースが失敗する原因となる違いを理解できません。

明確にするために写真を投稿するのに十分な「評判ポイント」がありません。

public class BuddiesFragment extends AbstractBaseFragment implements ActionBar.TabListener {
private final String[] buddyTabs = new String[] {"Buddy List", "Buddy Groups", "Buddy Favorites"};
private final String TAG = "BuddiesFragment";
BuddyListAdapter adapter;
NonScrollablePager pager;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //getActivity().getActionBar().hide();
    View view = inflater.inflate(R.layout.buddies_info_layout, container, false);

    adapter = new BuddyListAdapter(getFragmentManager());
    pager = (NonScrollablePager) view.findViewById(R.id.scroll_pager);
    pager.setAdapter(adapter);

    final ActionBar actionBar = getActivity().getActionBar();
    // Specify that the Home/Up button should not be enabled, since there is no hierarchical
    // parent.
    actionBar.setHomeButtonEnabled(false);
    // Specify that we will be displaying tabs in the action bar.
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // When swiping between different app sections, select the corresponding tab.
            // We can also use ActionBar.Tab#select() to do this if we have a reference to the
            // Tab.
            actionBar.setSelectedNavigationItem(position);
        }
    });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < adapter.getCount(); i++) {
        // Create a tab with text corresponding to the page title defined by the adapter.
        // Also specify this Activity object, which implements the TabListener interface, as the
        // listener for when this tab is selected.
        actionBar.addTab(
                actionBar.newTab()
                        .setText(adapter.getPageTitle(i))
                        .setTabListener(this));
    }

    return view;

}

AccountFragment には、AccountInfoFragment と BuddiesFragment にスワイプできる ViewPager があります。ActionBar は一切操作しません。

public class AccountFragment extends AbstractBaseFragment {
private CirclePageIndicator pageIndicator;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //getActivity().getActionBar().hide();
    View view = inflater.inflate(R.layout.account_layout, container, false);
    AccountPagerAdapter apa = new AccountPagerAdapter(getFragmentManager());
    ViewPager mViewPager = (ViewPager) view.findViewById(R.id.pager);
    mViewPager.setAdapter(apa);

    pageIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator);
    pageIndicator.setViewPager(mViewPager);

    return view;

}
private class AccountPagerAdapter extends FragmentPagerAdapter {
    private BuddiesFragment buddiesFragment;
    private AccountInfoFragment accountInfoFragment;

    private AccountPagerAdapter(FragmentManager fm) {
        super(fm);
        buddiesFragment = new BuddiesFragment();
        accountInfoFragment = new AccountInfoFragment();
    }

    @Override
    public Fragment getItem(int i) {
        switch(i) {
            case 0:
                return accountInfoFragment;

            default:
                return buddiesFragment;
        }
    }

    @Override
    public int getCount() {
        return 2;
    }
4

0 に答える 0