【发布时间】: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