我想刷新只有一个片段,在一个标签栏的活动时,我按后退按钮。我怎样才能做到这一点?我试了一下
显示java.lang.NullPointerException:尝试调用虚拟方法“android.support.v4.app.FragmentTransaction android.support.v4.app.FragmentManager.beginTransaction()”上的空对象引用
片段简介
public void refreshFragment(){
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(this).attach(this).commit();
}
编辑个人资料活动
@Override
public void onBackPressed() {
super.onBackPressed();
FragmentProfile fragment = new FragmentProfile();
fragment.refreshFragment();
}
您可以使用SharedPreferences做到这一点。
步骤1:创建一个常量类。
public class Constants {
public static final String REFRESH = "refresh_content";
}
步骤2:把布尔到constants.REFRESH上编辑个人资料的活动,
private SharedPreferences pref;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
pref = PreferenceManager.getDefaultSharedPreferences(getContext());
return inflater.inflate(R.layout.fragment_rostering, container, false);
}
public void onBackPressed() {
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean(Constants.REFRESH, true);
editor.commit();
super.onBackPressed();
}
第3步:在上的onResume片段档案调用刷新功能
private SharedPreferences pref;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
pref = PreferenceManager.getDefaultSharedPreferences(getContext());
return inflater.inflate(R.layout.fragment_profile, container, false);
}
@Override
public void onResume() {
super.onResume();
if(pref.getBoolean(Constants.REFRESH, false)){
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean(Constants.REFRESH, false);
editor.commit();
refreshFragment();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句