每个选项卡中有多个子片段的android viewpager
这让我头疼。假设我的应用程序有一个包含4个选项卡的ViewPager。我希望在每个选项卡中有多个子片段。这意味着每个选项卡将有不止一个视图。我完全不知道如何做到这一点 我有一个FragmentActivity,它首先加载并设置我的ViewPager 然后我有了我的碎纸机 以上内容将为我提供一个具有4个活动选项卡的工作ViewPager。然后我需要做所有4个片段。下面我举一个例子每个选项卡中有多个子片段的android viewpager,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,这让我头疼。假设我的应用程序有一个包含4个选项卡的ViewPager。我希望在每个选项卡中有多个子片段。这意味着每个选项卡将有不止一个视图。我完全不知道如何做到这一点 我有一个FragmentActivity,它首先加载并设置我的ViewPager 然后我有了我的碎纸机 以上内容将为我提供一个具有4个活动选项卡的工作ViewPager。然后我需要做所有4个片段。下面我举一个例子 public class FirstFrag extends Fragment { @Override
public class FirstFrag extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.firstfrag, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
Button btn1 = (Button) getActivity().findViewById(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// what should I put in this block??????
Fragment fragment = new FirstFragSub1();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.pager, fragment); //<<------what should i replace???????
transaction.commitAllowingStateLoss();
}
});
}
}
有人能帮我吗?我真的不知道…谢谢这里有一个很棒的教程和github,详细介绍了这一点
这包括使用每个选项卡的多个视图处理backbackback和多个选项卡。希望这有助于我在阅读您的问题时寻找类似的解决方案。视图中的框架布局因片段而膨胀。在CreateView中,用所需的子片段替换FrameLayout 另外,注意不要使用活动的FragmentManager。getFragmentManager返回活动的FragmentManager,这将导致不希望出现的结果ViewPager中只有一个片段会加载子片段。改为使用该函数
public class PagerAdapter extends FragmentPagerAdapter implements TextAndIconTabProvider {
private final String[] TITLES = { "FIRST", "SECOND", "THIRD", "FORTH" };
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment frag = new Fragment();
switch (position) {
case 1:
frag = new FirstFrag();
break;
case 2:
frag = new SecondFrag();
break;
case 3:
frag = new ThirdFrag();
break;
case 4:
frag = new ForthFrag();
break;
}
return frag;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return TITLES.length;
}
}
public class FirstFrag extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.firstfrag, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
Button btn1 = (Button) getActivity().findViewById(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// what should I put in this block??????
Fragment fragment = new FirstFragSub1();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.pager, fragment); //<<------what should i replace???????
transaction.commitAllowingStateLoss();
}
});
}
}
public class FirstFragSub1 extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
Log.i("FirstFragSub1","onCreateView is called");
return inflater.inflate(R.layout.subone, container, false);
}
}