【问题标题】:Android popBackStack does not load ListView in ListFragmentAndroid popBackStack 不加载 ListFragment 中的 ListView
【发布时间】:2014-05-21 14:52:14
【问题描述】:

我遇到了这个问题,我的 ListFragment 在拥有popBackStackImmediate 后为空 我有一个扩展FragmentActivity 的主要活动,并且我的主要活动附有Navigation drawer。第一个导航调用一个片段,它有一个自定义适配器,它实现了FragmentStatePagerAdapter,显示了三个选项卡。每个选项卡本身都是 ListFragments。当我单击列表的任何行时,它会转到另一个片段,直到一切正常,现在我想实现 backstack 以便当用户从详细信息页面按下返回按钮时,他们可以再次返回 FragmentList 页面.当我按下后退按钮时,它带我回到 FragmentList 页面,该页面很好,但页面为空,由于某种原因,列表没有显示。我检查了日志,发现数据在那里,直到代码的最后一点没有任何错误,但页面是空的,有人可以帮我吗?

当我从任何选项卡的列表中选择任何项目时,我会将事务添加到后台堆栈中并转到详细信息片段:

@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();  
    }
}

这会将我带到我从列表中单击项目的确切选项卡,但唯一的问题是片段是空的。 在 FragmentList 页面中,我有:

@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();

    }
}

它使用自定义适配器创建一个列表,它第一次工作正常,当我弹出后台堆栈时,此方法被调用并加载所有数据,直到onPostExecute 但列表从未显示,对不起,我我对 stackoverflow 并不陌生,但这是我的第二个问题帖子,所以我可能没有正确遵循约定...

【问题讨论】:

    标签: android android-fragments android-listview back-stack android-nested-fragment


    【解决方案1】:

    显然在一些帮助下我解决了这个问题...... 我在 FragmentActivity 中添加了片段事务,并使用我的 onListItemClick() 回调方法调用了应该运行事务的 FragmentActivity 方法。

    在 EventFragment 中替换:

    FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
    viewpager.setAdapter(new MyAdapter(fragmentManager));
    

    与:

    viewpager.setAdapter(new MyAdapter(getChildFragmentManager()));
    

    主要是getChildFragmentManager()解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多