Android popBackStack不在ListFragment中加载ListView
我遇到了这样一个问题,我的ListFragment在使用了Android popBackStack不在ListFragment中加载ListView,android,android-fragments,android-listview,back-stack,android-nested-fragment,Android,Android Fragments,Android Listview,Back Stack,Android Nested Fragment,我遇到了这样一个问题,我的ListFragment在使用了PopBackbackImmediate 我有一个扩展了FragmentActivity的主活动,我的主活动附带了一个导航抽屉。第一个导航调用一个片段,该片段具有一个自定义适配器,该适配器实现了显示三个选项卡的FragmentStatePagerAdapter。每个选项卡都是自己的列表片段。当我点击列表中的任何一行时,它会转到另一个片段,直到一切正常为止,现在我想实现backstack,这样当用户从详细信息页面按back按钮时,他们可以再
PopBackbackImmediate
我有一个扩展了FragmentActivity
的主活动,我的主活动附带了一个导航抽屉
。第一个导航调用一个片段,该片段具有一个自定义适配器,该适配器实现了显示三个选项卡的FragmentStatePagerAdapter
。每个选项卡都是自己的列表片段。当我点击列表中的任何一行时,它会转到另一个片段,直到一切正常为止,现在我想实现backstack
,这样当用户从详细信息页面按back按钮时,他们可以再次回到FragmentList页面。当我按下后退按钮时,它会将我带回FragmentList页面,该页面很好,但该页面是空的,由于某些原因,该列表不会显示。我检查了日志,发现数据在那里,它一直到代码的最后一位,没有任何错误,但是页面是空的,有人能帮我吗
当我从任何选项卡的列表中选择任何项目时,我会将事务添加到backstack中,并转到细节片段:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Fragment fragment = new LiveMatchDetailMainFragment();
android.support.v4.app.FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack("LiveFragment");
fragmentTransaction.commit();
}
在我的主要活动中,我有:
@Override
public void onBackPressed(){
Log.d("stack","back pressed");
FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount() > 0)
{
//fm.popBackStack();
boolean done = fm.popBackStackImmediate();
Log.i("stack", String.valueOf(done));
} else
{
Log.i("stack", "nothing on backstack, calling super");
super.onBackPressed();
}
}
这使我进入了我单击列表中项目的确切选项卡,但唯一的问题是片段是空的。
在碎片列表页面中,我有:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
LiveMatchList = new ArrayList<HashMap<String, Object>>();
//Log.d("LiveMatchList setUserVisibleHint","setUserVisibleHint");
new LoadUpcomingMatchList().execute();
}
}
@覆盖
public void setUserVisibleHint(布尔值isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
如果(isVisibleToUser){
LiveMatchList=新的ArrayList();
//Log.d(“LiveMatchList setUserVisibleHint”、“setUserVisibleHint”);
新建LoadUpcomingMatchList().execute();
}
}
它使用自定义适配器创建了一个列表,第一次运行良好,当我弹出backbackback时,这个方法得到调用并加载所有数据,直到
onPostExecute
,但列表从未显示,抱歉,伙计们,我对stackoverflow并不陌生,但这是我的第二个问题帖子,所以我可能没有正确地遵循惯例…显然,在一些帮助下,我解决了这个问题。。。
我在FragmentActivity中添加了片段事务,并使用onListItemClick()回调方法调用FragmentActivity方法,该方法应该运行事务
在EventFragment中:
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
viewpager.setAdapter(new MyAdapter(fragmentManager));
与:
主要是
getChildFragmentManager()
解决了我的问题。显然,在一些帮助下,我解决了这个问题。。。
我在FragmentActivity中添加了片段事务,并使用onListItemClick()回调方法调用FragmentActivity方法,该方法应该运行事务
在EventFragment中:
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
viewpager.setAdapter(new MyAdapter(fragmentManager));
与:
主要是getChildFragmentManager()
解决了我的问题