我有一个主要活动A(PlacesListActivity)。它从导航抽屉调用活动B(AboutMeActivity)。我已将活动A声明为清单中B的父活动。
现在,当我从A-> B开始,
如果我按下操作栏中的后退箭头,则会将我带回活动A.
关于硬件按钮,我必须按两次才能返回活动A.当我再按一次硬件时,没有任何反应。好像它只是重新加载活动B. 我不想要这个。按一下硬件按钮就可以完成这项工作。
活动代码B:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_me);
initialize();
}
private void initialize() {
toolbar = (Toolbar) findViewById(R.id.toolbarAboutMe);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
.....
}
初始化函数只是初始化一些UI元素。
调用活动B的代码:
@Override
public void onDrawerItemSelected(View view, int position) {
Intent i;
switch (position) {
case 0:
i = new Intent(this, AboutMeActivity.class);
startActivity(i);
break;
......
清单:
<activity
android:name="....AboutMeActivity"
android:parentActivityName="....PlacesListActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="....PlacesListActivity" />
</activity>
编辑:
我尝试过覆盖OnBackPressed()
,但它永远不会被调用。
尝试覆盖OnKeyDown()
并在其中调用finish()
,但仍然需要按两次才能返回活动A.
答案 0 :(得分:2)
在我的情况下,当我按下硬件后退按钮时,搜索组件确实具有焦点
这样做解决了我的问题:
override fun onResume() {
super.onResume()
searchInputView?.clearFocus() //searchInputView is initialized in onCreateOptionsMenu
}
所以一般来说,确保后退按钮与活动有关,而不是活动的子组件
答案 1 :(得分:0)
答案 2 :(得分:0)
处理活动B中的onBackPressed事件
@Override
public void onBackPressed() {
super.onBackPressed();
finish(); // to close this activity
//finish() or start another activity
}