从顶部开始,我想澄清一些事情:我正在努力的按钮不是back
按钮。我指的是应用顶部ActionBar /工具栏中的up/home
按钮,而不是底部的Android按钮。有一些类似性质的posts,但是它们是后退按钮,而不是向上按钮。
情况如下:我有一个活动A,它有一个ListView片段。当用户单击列表视图项时,它会启动活动B.非常典型。活动A在工具栏中有一个EditText
字段,允许用户输入搜索参数。如果用户点击了活动B中的up/home
按钮,我会成功返回活动A.但是,我希望活动A在他们离开时{C}场中显示相同的文字。如果用户点击EditText
按钮,则会恢复此文本。但如果他们使用back
按钮导航,则up/home
字段为空。
使用一些日志语句,我可以看到,当从活动A中点击列表项时,EditText
和onSaveInstanceState
都被调用(但此时未调用onStop
。 )在活动B中,当点按onDestroy
按钮时,来自活动A的up/home
立即被调用,然后是onDestroy
等。但是,捆绑{ {1}}为空,大概是因为onCreate
刚被调用。
为什么在返回活动A时调用savedInstanceState
?这对我来说毫无意义。以下是我在清单中的内容:
onDestroy
以下是活动A中的相关方法:
onDestroy
我不认为活动B中的任何代码都与此相关。
当用户点击活动A中的列表视图项时,这是我的控制台输出:
保存实例状态
停止
然后这是当用户点击活动B的<activity
android:name=".Activity.ActivityA"
android:label="@string/app_name"
android:parentActivityName=".Activity.ParentActivity"
android:theme="@style/AppTheme"
android:launchMode="singleTop"
android:windowSoftInputMode="stateVisible" />
<activity
android:name=".Activity.ActivityB"
android:label="@string/app_name"
android:parentActivityName=".Activity.ActivityA"
android:theme="@style/AppTheme" />
按钮时生成的内容:
on destroy
on创建
在简历
如果还有其他任何可能有帮助的地方,请告诉我。谢谢你的建议!
答案 0 :(得分:4)
我不知道为什么默认按钮实现会创建一个新活动,但我的工作解决方案是覆盖onOptionsItemSelected
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id== android.R.id.home ){
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
此解决方案也适用于我:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = NavUtils.getParentActivityIntent(this);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
NavUtils.navigateUpTo(this, intent);
return true;
default:
break;
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:0)