我有一个主要 Activity A (PlacesListActivity)。它从抽屉导航中调用 Activity B (AboutMeActivity)。我已在 list 中将 Activity A 声明为 B 的父 Activity 。
现在,当我从 A->B 时,
如果我按下操作栏中的后退箭头,它会将我带回到 Activity A。
关于硬件按钮,我必须按两次才能返回 Activity A。当我按一次硬件按钮时,没有任何反应。它似乎只是重新加载 Activity B。 我不想要这个。按一次硬件按钮应该可以完成工作。
Activity 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);
.....
}
initialize 函数只是初始化一些 UI 元素。
调用 Activity B的代码:
@Override
public void onDrawerItemSelected(View view, int position) {
Intent i;
switch (position) {
case 0:
i = new Intent(this, AboutMeActivity.class);
startActivity(i);
break;
......
list :
<activity
android:name="....AboutMeActivity"
android:parentActivityName="....PlacesListActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="....PlacesListActivity" />
</activity>
编辑:
我已经尝试覆盖 OnBackPressed()
,但它从未被调用。
尝试覆盖 OnKeyDown()
并在其中调用 finish()
,但我仍然必须按两次才能返回 Activity A。
最佳答案
在我的例子中,当我按下硬件后退按钮时,搜索组件确实获得了焦点
这样做解决了我的问题:
override fun onResume() {
super.onResume()
searchInputView?.clearFocus() //searchInputView is initialized in onCreateOptionsMenu
}
所以一般来说,确保后退按钮被 Activity 正确捕获,而不是被 Activity 的子组件捕获
关于android - 需要按两次后退按钮才能从 Activity 中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35522516/