当片段的数据来自上一个屏幕时,我想刷新它。
下面是代码的外观。
public class SettingsHomepageActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showFragment(new TopLevelSettings(), R.id.main_content);
}
private void showFragment(Fragment fragment, int id) {
final FragmentManager fragmentManager = getSupportFragmentManager();
final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
final Fragment showFragment = fragmentManager.findFragmentById(id);
if (showFragment == null) {
fragmentTransaction.add(id, fragment);
} else {
fragmentTransaction.show(showFragment);
}
fragmentTransaction.commit();
}
}
TopSettings extends Fragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
use(SupportPreferenceController.class).setActivity(getActivity());
}
}
在上面的代码中,您可以看到showFragment仅在onCreate()中显示。
现在,当数据在SupportPreferenceController中更新时,当用户按下主页按钮时,它会转到onStart(),因此不会调用TopSettings
因此当数据被更新时片段将不会被刷新。
我在设置主页活动中使用了以下代码,
@Override
protected void onRestart() {
this.recreate();
super.onRestart();
}
但每当我们转到任何页面时,上面的代码总是不断刷新碎片。
如何克服这一点?我需要刷新片段的数据,但不是每次都刷新整个片段。