Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android popBackStack不在ListFragment中加载ListView_Android_Android Fragments_Android Listview_Back Stack_Android Nested Fragment - Fatal编程技术网

Android popBackStack不在ListFragment中加载ListView

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按钮时,他们可以再

我遇到了这样一个问题,我的ListFragment在使用了
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()
解决了我的问题