我有一個片段和活動,將活動代碼如下所示:值爲空或默認值
public class ActivityA extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("intTest", 10);
outState.putString("stringTest", "hello");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (savedInstanceState != null){
int test = savedInstanceState.getInt("intTest");
String strTest = savedInstanceState.getString("stringTest");
}
}
}
和片段看起來是這樣的:
public class FragmentA extends Fragment {
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("intTest", 10);
outState.putString("stringTest", "hello");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView;
rootView = inflater.inflate(R.layout.fragment_a, container, false);
if (savedInstanceState != null){
int test = savedInstanceState.getInt("intTest");
String strTest = savedInstanceState.getString("stringTest");
}
return rootView;
}
}
(代碼插件簡化爲更好地理解)
好吧,在我的智能手機我有Android的7,我可以在2分割窗口顯示2型動物的應用程序,所以當我按下這個按鈕,我公頃已經我ActivityA我在執行FragmentA,我的代碼的執行情況如下:中FragmentA
onSaveInstanceState
被稱爲然後的ActivityA
onCreate
被調用,在
if (savedInstanceState != null){
int test = savedInstanceState.getInt("intTest");
String strTest = savedInstanceState.getString("stringTest");
}
問題的部分輸入是該值savedInstanceState
是空ø默認情況下,例如,用於strings
是null
和ints
是0
。
我認爲這種行爲發生時,應用程序保存其狀態,而不是隻有當我按下按鈕來分割窗口。
的問題是,爲什麼裏面savedInstanceState
值是空或默認值?我該如何解決它們?
感謝
P.S onSaveInstanceState
在ActivityA不執行,只是在FragmentA執行onSaveInstanceState
,我想這也是一個奇怪的行爲。
編輯:我認爲問題是,在FragmentA
onSaveInstanceState
不叫。但我不知道爲什麼它不被稱爲。
如果您可以驗證哪些方法正在調用將有所幫助。附加調試器並使用一些簡單的登錄到調試控制檯而不暫停應用程序的斷點。 – Karakuri
我在問題中說過,調用的方法是FragmentA中的onSaveInstance,然後是ActivityA上的OnCreate。或者您是指完整的執行流程? – RdlP