java - setDisplayHomeAsUpEnabled 在我的一项 Activity 中不起作用,但在其他地方它确实有效

标签 java android android-toolbar

由于某种原因,这在我的一项 Activity 中不起作用,但在其他地方它工作正常,当我按工具栏中的后退箭头时,它会返回到我的 MainActivity。

import androidx.appcompat.widget.Toolbar;

//Initializing toolbar
mToolbar = findViewById(R.id.mToolbar);
setSupportActionBar(mToolbar);

if((getSupportActionBar() != null)){
    getSupportActionBar().setTitle(R.string.equalizerTitle);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_home_up);
}

list

<activity
     android:name=".activities.EqualizerActivity"
     android:parentActivityName=".activities.MainActivity"
     android:screenOrientation="portrait"/>

编辑

此 Activity 使用约束布局作为父项,但我不明白为什么这会是原因,所有其他 Activity 都使用relativelayout,并且它们工作正常。

最佳答案

看起来您正在使用 onOptionsItemSelected() 方法来处理菜单按钮。问题是“后退”按钮也是一种菜单按钮。

为了让 Android 知道您没有该按钮的特定处理程序并且它应该由框架处理,您需要通过在您不这样做时返回 false 来让 Android 知道这一点不要“消耗”该事件。根据文档:

onOptionsItemSelected()

boolean Return false to allow normal menu processing to proceed, true to consume it here.

所以,你应该有这样的东西:

public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
               case YOUR_BUTTON:
                   // do something
                   return true;
       }
       // By default, allow Android to work on it
       return false;

关于java - setDisplayHomeAsUpEnabled 在我的一项 Activity 中不起作用,但在其他地方它确实有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60254773/

相关文章:

android - 如何在工具栏顶部和底部放置颜色线

android - 当我在jetpack-compose中的canvas中使用drawText并设置textStyle时,位置偏离中心

android - 从android抽屉导航图标中删除左边距

java - Hql 错误 : Class is not mapped, 无法解析符号

java - 多次使用准备好的语句是否资源安全?

android - 错误 :Unable to obtain debug bridge in android studio

android - 非拉丁语言环境中的 PatternSyntaxException

android - 将徽章计数器添加到 Android 中的汉堡导航菜单图标

Java HashMap内部存储在不同的桶中

java - 是否存在一种万无一失的跨平台方式来重现 SIGBUS?