【发布时间】:2015-07-21 07:23:20
【问题描述】:
注意:我已经使用 ViewPager 实现了选项卡。我正在创建一个在 viewpager 中具有三个选项卡(片段)的应用程序。我想创建一个导航抽屉,我可以在其中看到这三个选项卡,然后单击任何一个导航到相应的选项卡。
Main Activity 扩展了 ActionBarActivity 并具有以下代码
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Fragment fragment = new CategoryFragment();
Bundle args = new Bundle();
args.putInt(CategoryFragment.CATEGORY_NUMBER, position);
fragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.pager, fragment);
transaction.addToBackStack(null);
transaction.commit();
getSupportFragmentManager().executePendingTransactions();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mOptionsNavDrawer[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
CategoryFragment 看起来像这样
public static class CategoryFragment extends android.support.v4.app.Fragment {
public static final String CATEGORY_NUMBER = "category_number";
public CategoryFragment() {
// Empty constructor required for fragment subclasses
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int fragmentNumber = getArguments().getInt(CATEGORY_NUMBER);
View rootView=null;
if(fragmentNumber==0)
{
rootView = inflater.inflate(R.layout.F1, container, false);
}
else if (fragmentNumber==1)
{
rootView = inflater.inflate(R.layout.F2, container, false);
}
else if(fragmentNumber==2)
{
rootView = inflater.inflate(R.layout.F3, container, false);
}
else
{
rootView = inflater.inflate(R.layout.F4, container, false);
}
return rootView;
}
}
CategoryFragment 中的 OnCreateView 函数被调用,但 Fragments(F1. F2. F3 ) 未设置。还有其他调用这些片段的方法吗?这些片段中的每一个都是各自的选项卡。
【问题讨论】:
-
他们都没有使用 ViewPager
标签: android android-fragments android-viewpager navigation-drawer fragmentmanager