Android 返回时保留片段状态
我的(阅读)应用程序由一个(MainActivity)和几个其他片段组成 我有一个Android 返回时保留片段状态,android,android-layout,android-fragments,android-fragmentactivity,fragmenttransaction,Android,Android Layout,Android Fragments,Android Fragmentactivity,Fragmenttransaction,我的(阅读)应用程序由一个(MainActivity)和几个其他片段组成 我有一个LibraryFragment,列出了所有保存的文章 和一个ReadingFragment(用于阅读文章) 文章可以包含链接,当用户单击链接时,我正在使用片段。replace事务显示ReadingFragment的新实例,现在当我单击后退按钮时,我的当前片段被删除,旧片段被显示,它使用它的参数再次加载内容(但我失去了滚动位置) 我尝试使用.add事务,但由于某种原因,添加的片段覆盖了前一个片段 我的代码: pu
LibraryFragment
,列出了所有保存的文章
和一个ReadingFragment
(用于阅读文章)
文章可以包含链接,当用户单击链接时,我正在使用片段。replace
事务显示ReadingFragment
的新实例,现在当我单击后退按钮时,我的当前片段被删除,旧片段被显示,它使用它的参数再次加载内容(但我失去了滚动位置)
我尝试使用.add
事务,但由于某种原因,添加的片段覆盖了前一个片段
我的代码:
public void showFragment(Fragment fragment, Boolean addToBackStack)
{
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.content_frame, fragment);
if (addToBackStack && get_currentFragment() != null) transaction.addToBackStack(null);
transaction.commit();
}
我想保留片段的布局和状态,在用户每次单击链接时添加一个新实例,并在用户返回时立即恢复片段。(就像我使用startActivity时所做的那样)
更新
我正在片段的
onActivityCreated(Bundle savedInstanceState)
回调中加载内容。这可能与加载内容的方式有关。你能发布代码吗?@blahdiblah我更新了我的问题:)内容加载可能就是问题所在onActivityCreated
在初始创建时以及返回片段并在片段中执行某些操作(如设置新的列表适配器)时都会被调用,可以轻松重置视图状态。尝试将加载移动到onatach
或onCreate
,看看这是否能解决问题。@blahdiblah但如果我使用onCreate,ui还没有准备好,因为(onCreateView在onCreate之后执行)FragmentManager FragmentManager=getSupportFragmentManager();FragmentTransaction=fragmentManager.beginTransaction();事务.替换(R.id.content\u frame,fragment);交易。addToBackStack(“名称”);commit();