我有一个名为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
,以便在更换相片时我可以从Bundle
重新创建视图,因此在onResume
我有:
@Override
public void onResume() {
if(SavedString != null){
ProductInfo.setText(Html.fromHtml(SavedString.getString("SavedString")));
}
super.onResume();
}
然后我有一个名为ResultsList
的活动,其中包含产品列表,点击后,我开始重新调用ProductDisplayActivity
,当然还有不同的值。
问题:
我的问题是,如果我从product 1
导航到product list
然后导航到product 2
,然后尝试按导航按back button
,{{1 } Bundle
的{{1}} product 1
。
我不知道如何解决这个问题,在调用新的ProductInfoDescription
然后product 2
不应该每个片段都有自己的ProductDisplayActivity
具有自己的值,因为它们是不同的片段吗? / p>
答案 0 :(得分:0)
然后我有一个名为ResultsList的活动,其中包含产品列表,点击后,我开始一个新的意图再次调用ProductDisplayActivity,当然还有不同的值。
你确定你没有弄乱这里的术语吗?听起来确实如此。
编辑:嗯,你没有。通过在活动中嵌入Fragments,您可以将自己置于处理生命周期加倍的位置。
答案 1 :(得分:0)
我以非最佳的方式解决了这个问题,所以如果有人提出更好的答案,我会很乐意检查。
基本上我也将字符串“SavedString”保存到活动中,所以当Activity恢复时我调用片段函数来设置文本:
ProductInfoFragmentListener.DownloadProductInfo(Html.fromHtml(SavedString.getString("SavedString")));