FragmentPagerAdapter
和之间有什么区别FragmentStatePagerAdapter
?
关于FragmentPagerAdapter
Google的指南说:
此版本的寻呼机最适合在有少量通常更多静态片段进行分页时使用,例如一组选项卡.用户访问的每个页面的片段将保留在内存中,但其视图层次结构可能在不可见时被销毁.这可能导致使用大量内存,因为片段实例可以保持任意数量的状态.对于较大的页面集,请考虑
FragmentStatePagerAdapter
.
关于FragmentStatePagerAdapter
:
当存在大量页面时,此版本的寻呼机更有用,更像列表视图.当页面对用户不可见时,它们的整个片段可能被破坏,只保留该片段的保存状态.与
FragmentPagerAdapter
在页面之间切换时可能更多的开销相比,这允许寻呼机保持与每个被访问页面相关联的更少的存储器 .
所以我只有3个片段.但它们都是具有大量数据的独立模块.
Fragment1
处理一些数据(用户输入)并通过活动传递给它Fragment2
,这很简单ListFragment
.Fragment3
也是一个ListFragment
.
所以我的问题是:我应该使用哪种适配器?FragmentPagerAdapter
还是FragmentStatePagerAdapter
?
android android-fragments android-viewpager fragmentpageradapter fragmentstatepageradapter
如果我的应用程序仅支持Android 4+设备,是否需要使用Roboto字体并将其放入资产文件夹?
我非常感谢你的帮助.亚历克斯.PS抱歉我的英文:)
根据谷歌的文档:
您现在可以将片段嵌入片段中.这对于您希望将动态和可重用UI组件放入自身动态且可重用的UI组件的各种情况都很有用.例如,如果使用ViewPager创建向左和向右滑动并占用大部分屏幕空间的片段,则现在可以将片段插入到每个片段页面中.要嵌套片段,只需在要添加片段的片段上调用getChildFragmentManager().这将返回一个FragmentManager,您可以像通常从顶级活动那样使用它来创建片段事务.例如,这里有一些代码可以在现有的Fragment类中添加一个片段:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
Run Code Online (Sandbox Code Playgroud)
所以我(例如)TestFragment
看起来像:
public class TestFragment extends Fragment {
private View mFragmentView;
private FrameLayout mFrameLayout;
public HistoryFragment() {
super();
}
@Override
public View onCreateView(LayoutInflater pInflater, ViewGroup pViewGroup, Bundle pBundle) {
mFragmentView = pInflater.inflate(R.layout.fragment_layout, pViewGroup, false);
mFrameLayout = (FrameLayout) mFragmentView.findViewById(R.id.framelayout);
return mFragmentView;
}
public void onDestroyView() {
super.onDestroyView();
}
/* ISSUE */
public void doSomethingSpecial() {
FragmentManager tFragmentManager = getChildFragmentManager();
}
}
Run Code Online (Sandbox Code Playgroud)
在MainActivity
我初始化我的片段像:
mTestFragment = …
Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentmanager android-nested-fragment
我用a ViewPager
来显示一个片段FragmentActivity
.ViewPager从附件中获取片段FragmentPagerAdapter
.
mViewPager = (ViewPager) findViewById(R.id.view_pager);
mAdapter = new HomePagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)
假设ViewPager
有3个片段来显示:Fragment1
,Fragment2
,Fragment3
.Fragment1
是网格片段并显示网格.Fragment2
并Fragment3
有自己的内容来展示.当使用在屏幕上滑动时,ViewPager
将显示下一个片段 - Fragment2
.等等.
我想要的是,当Fragment1
点击网格中的一个项目(由...显示)时,Fragment1
应该完全替换为其他一些片段,比如说Fragment4
(这是不同的片段,连接的适配器不会返回).用户将Fragment4
在ButtonBack
点击之后(仅按钮旁边Fragment4
)工作,Fragment1
并且应该再次显示网格.同时ViewPager
应该表现相同,即在滑动时,Fragment2
将显示下一个片段(在我们的例子中).
所以我只想获得与示例相同的行为:http: //developer.android.com/training/basics/fragments/fragment-ui.html#Replace
那么,这有可能实现吗?如果是,那该怎么办?我非常感谢你的帮助.亚历克斯.PS抱歉我的英文:)
android replace android-fragments android-viewpager fragmentpageradapter
我GridView
在我的申请中使用.GridView
有非常简单的细胞:只有两个TextView
.当用户点击该按钮时ActionBar
,会Dialog
打开.他可以在这里制作一个新的细胞.我使用此代码更新我的GridView:
mNotesAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
而且效果很好.但新电池立即弹出.而另一个只是改变了他们的立场.我想实现动画效果,它看起来像Google Keep的效果.
> 在Google Play商店中查看Google Keep.
可能吗?请分享一些链接或一些知识.
我非常感谢你的帮助.亚历克斯.PS抱歉我的英文:)
根据谷歌的文档:
您现在可以将片段嵌入片段中.这对于您希望将动态和可重用UI组件放入自身动态且可重用的UI组件的各种情况都很有用.例如,如果使用ViewPager创建 向左和向右滑动并占用大部分屏幕空间的 片段,则现在可以将片段插入到每个片段页面中.要嵌套片段,只需在要添加片段的片段上调用getChildFragmentManager().这将返回一个FragmentManager,您可以像通常从顶级活动那样使用它来创建片段事务.例如,这里有一些代码可以在现有的Fragment类中添加一个片段:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
Run Code Online (Sandbox Code Playgroud)
所以我创造了自己的PageFragment
.而我PageFragmentAdapter
的3页PageFragment
.我还有6个片段:Fragment1
,Fragment2
,Fragment3
,FragmentA
,FragmentB
,FragmentC
.在我的MainActivity
初始化我的六个片段,我ViewPager
和它PageFragmentAdapter
(它PageFragment
自己初始化三个).
然后,我用这个方法来附上我的Fragment1
,Fragment2
,Fragment3
每个页面(每个PageFragment
的)PageFragmentAdapter
:
PageFragmentAdapter tPageFragmentAdapter = new PageFragmentAdapter(getSupportFragmentManager());
tPageFragmentAdapter.setFirstPage(tFragment1);
tPageFragmentAdapter.setSecondPage(tFragment2);
tPageFragmentAdapter.setThirdPage(tFragment3);
Run Code Online (Sandbox Code Playgroud)
我可以回复(通过方法PageFragmentAdapter
)片段并将"嵌套片段"放入我的PageFragment
(当然onCreate()
)中,如:
getChildFragmentManager().beginTransaction()
.add(R.id.framelayout_history, mFragment)
.addToBackStack(null)
.commit();
Run Code Online (Sandbox Code Playgroud)
注意:我用它PageFragment.setNestedFragment() …
android nested android-fragments android-viewpager fragmentpageradapter
android ×7
fonts ×2
android-4.0-ice-cream-sandwich ×1
android-collapsingtoolbarlayout ×1
animation ×1
assets ×1
font-size ×1
nested ×1
replace ×1
toolbar ×1