我有一个片段和活动,将活动代码如下所示:值为空或默认值
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