我有一个活动a,我用一些额外的东西启动它(即,把一些数据放到启动活动的意图中)。在这个活动中,我启动了另一个活动b。问题是,当我从b返回到a时,通过调用finish(),活动的get intent()方法返回一个不包含额外内容的intent。
所以,我的问题是:这是正常的行为吗?有没有什么方法可以让活动a保持最初的意图。
哦,请注意,我已经重写了活动a中的onSaveInstanceState()。
编辑:
我的设备上不再有这种行为。我没有修改密码。我在用一个3年前的设备做测试。我想知道这是否是设备故障引起的?
最佳答案
我搞清楚了。此问题仅在我单击ActionBar的后退箭头时发生,而不是在我按下设备的后退按钮时发生。因为当按下back按钮时,b活动的finish()方法被调用,应用程序通常返回到已经创建的活动a的实例,当默认情况下单击actionbar的back箭头时,活动b不调用finish()方法,而是创建活动的新实例。a由于android的横向导航功能。因此,解决方案是重写ActionBar的后退箭头单击功能,如下所示(添加到活动B的方法):
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
int itemId = menuItem.getItemId();
if (itemId == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(menuItem);
}