我有一个叫做ProductDisplayActivity
的活动,里面有一个片段。这个片段被我的活动onCreate
方法创建这样的:捆绑值覆盖
ProductInfoFrag = new ProductInfoFragment();
ProductInfoFragmentListener = (ProductRetrieveInfoInterface) ProductInfoFrag;
FragmentTransaction InitialTransaction = fm.beginTransaction();
InitialTransaction.add(R.id.product_info_frame, ProductInfoFrag);
InitialTransaction.commit();
在片段,通过一个接口,我调用这个函数:
@Override
public void DownloadProductInfo(String ProductInfoDescription) {
ProductInfo.setText(Html.fromHtml(ProductInfoDescription));
SavedString = new Bundle();
SavedString.putString("SavedString", ProductInfoDescription);
}
我想保存ProductInfoDescription
这样,当替换frament我可以重新创建从该Bundle
视图,所以在onResume
我有:
@Override
public void onResume() {
if(SavedString != null){
ProductInfo.setText(Html.fromHtml(SavedString.getString("SavedString")));
}
super.onResume();
}
然后我甲肝e带有产品清单的名为ResultsList
的活动,点击后我开始新的意向再次呼叫ProductDisplayActivity
,当然不同的值。
问题:
我的问题是,如果我从product 1
导航到product list
的然后product 2
,然后尝试回导航按下back button
的product 1
的Bundle
有product 2
的ProductInfoDescription
。 我不知道如何解决这个问题,当调用一个新的ProductDisplayActivity
,然后new ProductInfoFragment
不应该每个片段都有自己的Bundle
自己的值,因为是不同的片段?
'但表示用通过开展活动片段新意图不是我想象的最好主意。“你能解释一下为什么吗?此外,该列表不是一个片段,而是一个活动,正如我在我的问题中所写的,我从“产品活动”导航到“列表活动”,然后再次导航到“产品活动”。 – 2013-03-19 12:10:33
只需很少的工作,您就可以通过在布局中封装碎片来适应多个屏幕。你不能真正把两个不同的活动放在一起。 FragmentManager类使它更容易。通过将一个片段放入不同的活动中,您正在限制自己,因为片段被设计为模块化并具有自己的生命周期。 – 2013-03-20 13:02:08