Dialogfragment嵌套Viewpager
来源:互联网 发布:crazepony源码 编辑:程序博客网 时间:2024/05/20 18:45
项目需要实现一个在页面底部的弹窗,里面是Viewpager实现的可以左右滑动的多页面。Viewpager其中一个页面有Listview,点其中的按钮会跳转到Viewpager另外一个子页面中,并且更新其中的内容。
首先需要实现页面底部弹窗,一开始准备使用Popupwindow + Viewpager的方法,后来搜了资料发现这里有一个android的bug,会报错“Error no view found id for fragment”。stackoverflow上有人用了view在pageradapter中的方法来解决这个问题,这里我用了Dialogfragment代替Popupwindow来解决。
以下是Dialogfragment, viewpagerAdapter和相关布局文件的代码。
//dialogfragmentpublic class CustomDialog extends DialogFragment{@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //full screen dialog fragment setStyle(DialogFragment.STYLE_NORMAL, R.style.popupDialog); }@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dialog_shop_viewpager, container); final ViewPager viewPager; viewPager = (ViewPager) view.findViewById(R.id.viewpager); List fragments = getFragments(); CustomViewpagerAdapter viewpagerAdapter = new CustomViewpagerAdapter(getChildFragmentManager(), fragments); viewPager.setAdapter(viewpagerAdapter); return view; } private List getFragments(){ List fList = new ArrayList(); fList.add(CustomDialogFragment.newInstance(1)); fList.add(CustomDialogFragment.newInstance(2)); fList.add(CustomDialogFragment.newInstance(3)); return fList; }}
//CustomViewpagerAdapterpublic class CustomViewpagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; public CustomViewpagerAdapter(FragmentManager fragmentManager, List<Fragment> fragments){ super(fragmentManager); this.fragments = fragments; } @Override public Fragment getItem(int position) { return this.fragments.get(position); } @Override public int getCount() { return this.fragments.size(); }}
//DialogFragment.xml (include a navigation)<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> <include android:id="@+id/nav" layout="@layout/nav" /> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#fff" /></LinearLayout>接下来实现在Frament中的Listview,设置Adapter和
//ListViewFragmentpublic class ListViewFragment extends Fragment {public static final ListViewFragment newInstance(String sid){ ListViewFragment fragment = new ListViewFragment(); return fragment; }@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View v = inflater.inflate(R.layout.fragment_shop_winning_suggestion, container, false);//Set view, listview, adapter and data hereinitViews(v); initDatas(); return v; }}
0 0
- Dialogfragment嵌套Viewpager
- viewpager嵌套viewpager
- viewpager嵌套viewpager
- viewpager嵌套viewpager
- viewpager嵌套viewpager
- ViewPager嵌套ViewPager
- ViewPager 嵌套 ViewPager的解决方法
- ViewPager 嵌套ViewPager 焦点解决
- ViewPager嵌套ViewPager的问题
- viewpager嵌套viewpager滑动处理
- viewPager+fragment嵌套viewPager+fragment
- ViewPager+Fragment嵌套ViewPager+Fragment
- ViewPager嵌套Viewager嵌套问题
- ScrollView嵌套ViewPager
- ViewPager嵌套问题
- ListView嵌套ViewPager
- ListView嵌套ViewPager
- Viewpager嵌套Listview
- 浅谈Java中的Set、List、Map的区别
- 网络协议
- MacOS Sierra下运行react-native start出现Error watching file for changes: EMFILE问题解决
- java.sql.BatchUpdateException: ORA-00001: unique constraint (IEVSP.PK_C_CSERVICES) violated
- git 常用命令
- Dialogfragment嵌套Viewpager
- Android现在实现Tab类型的界面
- spring用到的设计模式
- spark 2.0.1 和zeppelin 0.6.2 编译及与hadoop yarn关联
- 文章标题
- svn
- C++实现任意表达时候求值(栈)
- java基础
- [RK3288][Android6.0] USB 枚举过程小结