【发布时间】:2017-03-14 13:56:01
【问题描述】:
我有一个博客应用程序,但我在使用 PostFragment 时遇到了困难。
当用户发帖时,他可以通过点击一个按钮来选择一种感觉,该按钮将他带到另一个带有感觉列表的片段。一旦他选择了感觉,我就调用 popBackStack() 以便将他带到上一个屏幕。
因为我需要在 PostFragment 上显示他的选择,所以我将该值保存在 Activity 中(我在 SO 中看到了这种技术)。这是活动的 selectedFeeling 变量:
public class FeedActivity extends BaseActivity {
Intent intent;
Post post;
private Feeling selectedFeeling;
@Override
protected void onCreate(Bundle savedInstanceState){
...
FeelingsFragment 上的听众:
private AdapterView.OnItemClickListener onGridViewItemClick() {
return new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Feeling selected = feelings.get(position);
((FeedActivity)getActivity()).setSelectedFeeling(selected);
getActivity().getSupportFragmentManager().popBackStack();
}
};
}
一切都运行良好:用户点击感觉按钮,转到 FeelingsFragment,选择感觉,我将其保存到活动中,调用 popBackStack() 并在 OnResume 方法上的 PostFragment 中显示选择的感觉:
@Override
public void onResume() {
super.onResume();
selectedFeeling = ((FeedActivity)getActivity()).getSelectedFeeling();
if(selectedFeeling != null){
selectedFeelingTv.setText(getString(R.string.selected_feeling) + selectedFeeling.getFeeling());
}
}
我的问题是用户也可以从图库中选择一张照片,当他这样做时,我选择的感觉结果是空的。我认为发生这种情况是因为我保存它的 Activity 已重新启动,那么我该如何保留该数据?
【问题讨论】:
-
试试
onAttach,而不是onResume -
它也不好用。使用 onAttach 选择的感觉从未显示出来。
标签: android android-activity fragment