我有以下情况:
onPause,onSaveInstanceState和onStop方法.onDestroy),然后重新创建.(这似乎就是这样发生的.我没有实现这种方式,似乎只是Android的做事方式..)onCreate方法期间,变量savedInstanceState始终为null.我知道这里有类似的话题,但他们似乎都没有对我的情况有答案.所有的回调方法都有日志行,所以我确定执行了save方法并执行了destory.但为什么从来没有一个savedInstanceState对象呢?
我的保存方法:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putSerializable(OpenSessionsActivity.SESSION, session);
System.out.println("saving ..");
super.onSaveInstanceState(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)
你还需要我包含其他代码吗?
在向上导航时重新创建顶部活动.为了保持活动A的状态,你可以
A)将活动A的启动模式设置为"singleTop"(添加android:launchMode="singleTop"到AndroidManifed.xml)
要么
B)从活动B导航时FLAG_ACTIVITY_CLEAR_TOP向up意图添加标志:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent up = NavUtils.getParentActivityIntent(this);
up.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, up);
return true;
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
这是一个记录在案的行为:
同样,如果您向上导航到当前堆栈上的活动,则行为由父活动的启动模式确定.如果父活动具有启动模式singleTop(或up intent包含FLAG_ACTIVITY_CLEAR_TOP),则父项将被置于堆栈顶部,并保留其状态.导航意图由父活动的onNewIntent()方法接收.如果父活动具有启动模式标准(并且向上意图不包含FLAG_ACTIVITY_CLEAR_TOP),则当前活动及其父活动都从堆栈弹出,并且创建父活动的新实例以接收导航意图.
按Up操作栏实际上与按下back按钮不一样.
如果您希望它们的行为相同,您可以在活动B中使用此代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |