android - 需要按两次后退按钮才能从 Activity 中返回

标签 android

我有一个主要 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/

相关文章:

Android 在应用程序内部模拟 applicationcontext

java - 移动不受 FPS 影响的对象

java - FCM 数据消息无法正常工作

android - Android 中类似 5 面骰子的布局

android - 为什么在 Android 模拟器上运行时 Firebase 在 PhoneGap 应用程序中返回 404 错误?

android - intent.resolveActivity() 在带摄像头的设备上为 NULL (4.2.2)

android - 上传 playstore 免费和付费应用程序国家明智

android - 如何在 flutter 中创建 SharedPreferences 的单例类

java - Android 的 getBSSID() 方法错误?

java - 无法从 EditText 解析 Double