setDisplayHomeAsUpEnabled 在我的一项活动中不起作用,但在其他任何地方都有效
setDisplayHomeAsUpEnabled not working in one of my Activities but everywhere else it does work
出于某种原因,这在我的一个活动中不起作用,但在其他任何地方都可以正常工作,当我按下工具栏中的后退箭头时,它会返回到我的 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);
}
清单
<activity
android:name=".activities.EqualizerActivity"
android:parentActivityName=".activities.MainActivity"
android:screenOrientation="portrait"/>
编辑
这个 activity 使用约束布局作为父级,但我不明白为什么会这样,所有其他活动都使用 RelativeLayout 并且在那里它们工作正常。
看起来您正在使用 onOptionsItemSelected()
方法来处理菜单按钮。问题是 "back" 按钮也是一种菜单按钮。
为了让 Android 知道您没有按钮的特定处理程序并且它应该由框架处理,您需要通过返回 Android 让 Android 知道它=12=] 当你不 "consume" 活动时。根据文档:
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;
出于某种原因,这在我的一个活动中不起作用,但在其他任何地方都可以正常工作,当我按下工具栏中的后退箭头时,它会返回到我的 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);
}
清单
<activity
android:name=".activities.EqualizerActivity"
android:parentActivityName=".activities.MainActivity"
android:screenOrientation="portrait"/>
编辑
这个 activity 使用约束布局作为父级,但我不明白为什么会这样,所有其他活动都使用 RelativeLayout 并且在那里它们工作正常。
看起来您正在使用 onOptionsItemSelected()
方法来处理菜单按钮。问题是 "back" 按钮也是一种菜单按钮。
为了让 Android 知道您没有按钮的特定处理程序并且它应该由框架处理,您需要通过返回 Android 让 Android 知道它=12=] 当你不 "consume" 活动时。根据文档:
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;