我知道這個問題是非常普遍的,我已經閱讀了很多不同的答案,但沒有一個適合我的問題。在我的應用程序中,我有一個活動,並在rhye活動中加載一個片段。我還將一些數據(以Bundle的形式)發送到片段。所以我的問題是當屏幕旋轉時,我保存片段在onSaveInstanceState
活動方法和簽入onCreate方法天氣savedInstance爲null或不,並在此基礎上加載片段。 活動代碼:保存自定義對象在屏幕上旋轉在片段或活動
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outState.putParcelable(Const.TAG_REQ_CUSTOM,DetailsItems);
outState.putString(Const.TAG_FLOW, Const.TAG_MAIN_FLOW);
getSupportFragmentManager().putFragment(outState,"current_fragment",fragment);
}
onCreate方法:
if (findViewById(R.id.fragment_frame) != null) {
if (savedInstanceState != null) {
// this invoke when screen rotate but the app crash
DetailsItems = savedInstanceState.getParcelable(Const.TAG_REQ_CUSTOM);
String flow = savedInstanceState.getString(Const.TAG_FLOW);
ft = getSupportFragmentManager().getFragment(savedInstanceState,"current_fragment");
mFragmentManager=getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
bundle= new Bundle();
bundle.putString(Const.TAG_FLOW, flow);
bundle.putParcelable(Const.TAG_REQ_BOOKING_DETAILS, bookingDetailsItems);
ft.setArguments(bundle);
mFragmentTransaction.replace(R.id.fragment_frame, ft).commit();
}else{
// load fragment on first time
}
}
所以我的問題是:我在哪裏有保存自定義對象(父活動或片段)? 當我保存的實例並不比應用crashesh和日誌null是:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
假定對象實現'Parcelable'接口,而OP則詢問如何保存/恢復任意對象。 – azizbekian