Android 更改为其他活动时保持活动状态
我有以下情况:Android 更改为其他活动时保持活动状态,android,android-activity,Android,Android Activity,我有以下情况: 活动A>活动B 活动A
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_details);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null)
{
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
// check for saved instance
if (savedInstanceState != null)
{
//restore saved values
}
else
{
//initialize members with default values
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
savedInstanceState.putString("typeID", typeID);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
typeID = savedInstanceState.getString("typeID");
}
public boolean gotoActivityB(View view)
{
Intent intent = new Intent(getApplicationContext(), ActivityB.class);
startActivity(intent);
return false;
}
活动B代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buy_item);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null)
{
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
//do some magic...
}
public boolean onOptionsItemSelected(MenuItem item)
{
Intent intent = new Intent(getApplicationContext(), ActivityA.class);
startActivity(intent);
return false;
}
每次我从活动B转到活动A,savedInstanceState都等于null,换句话说,活动A的状态不会被保存或还原
我错过了什么
!!解决方案强>
根据的回答,活动默认保持其状态。因此,不需要savedInstanceState。为了解决我的问题,我只需将我的后退按钮事件更新为:
public boolean onOptionsItemSelected(MenuItem item)
{
finish();
return true;
}
作为各国的文件:
调用onPause()而不调用onPause()的示例
onSaveInstanceState(Bundle)是当活动B在
活动A:系统可能会避免调用saveInstanceState(Bundle)
在活动A上,如果自
的用户界面状态将保持不变
因此,您不能仅仅因为B
在A
前面启动,就假定onSaveInstanceState()
会在A
上被调用。事实上,在大多数情况下,情况并非如此
[已编辑]
您的B代码似乎正在调用startActivity()以“返回”到之前的活动。如果您只想让B返回到上一个活动,您可以(通常)调用finish()退出B,这将允许A重新出现(其状态保持不变),因为它将成为中的顶级活动。谢谢您的回复。我如何解决我的问题?如何保存活动状态?您可能不需要保存实例状态。您的
B
代码似乎正在调用startActivity()
以“返回”到上一个活动。如果您只想B
返回到之前的活动,您可以(通常)调用finish()
退出B
,这将允许A
重新出现(其状态保持不变),因为它将成为中的顶级活动。让它工作吧!:)谢谢你的帮助。我是android开发新手,不完全理解导航模式是如何工作的。现在我明白了。再次感谢