【发布时间】:2011-06-07 00:23:19
【问题描述】:
我正在尝试用我根据通过网络连接返回的一些信息生成的片段完全替换片段回栈。我首先将返回堆栈弹出到我想要的位置(效果很好......但为了简单起见,我可以说我弹出到根),然后我尝试构建并应用这样的片段堆栈:
ArrayList<JSONObject> crumbsOut = new ArrayList<JSONObject>(count);
//.... pop the back stack to a certain point
//replace entire nav. backstack
final FragmentTransaction transaction = this.getActivity().getSupportFragmentManager().beginTransaction();
for(int i = 0; i<count; i++)
{
final JSONObject item = crumbsOut.get(i);
final String id = item.getString("id");
FolderFragment currentFolder = new FolderFragment();//fragment displays folder contents
Bundle args = new Bundle();
args.putString(DATA_ITEM_ID_KEY, id);
args.putString(DATA_ITEM_NAME_KEY, item.getString("displayname"));
currentFolder.setArguments(args);
transaction.replace(R.id.MasterContainer, currentFolder);
transaction.addToBackStack(id);
}
// Commit the transaction
transaction.commit();
当我运行它时,最顶层的 FolderFragment 正确显示,但是当我点击后退按钮(或弹出堆栈)时,视图恢复到运行上述代码之前的点(即,而不是返回在我使用循环创建的新片段堆栈中,我回到尝试添加/创建此堆栈之前的状态)。
如果有帮助,我将在我的项目中使用 Android 兼容包。
请帮忙。谢谢
【问题讨论】:
标签: java android-fragments android