如何将主页按钮作为 MenuItem android
How to get Home Button as MenuItem android
我正在设置我的工具栏:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
toolbar.setTitle(R.string.app_name);
如何将主页按钮 (android.R.id.home
) 检索为 MenuItem
?
这是我尝试过的:
MenuItem back = menu.findItem(android.R.id.home);
但出于某种原因,这会造成 NullPointerException
。那么如何在不获取 NullPointerException
的情况下将其检索为 MenuItem
?
This SO answer,建议使用以下代码 ,但它似乎不起作用,我找不到任何其他代码。
getWindow().getDecorView().findViewById(android.R.id.home);
在任何情况下它都是 hacky,因为您不需要那个引用,并且在任何情况下您都不应该遍历视图层次结构来获取它。由于 Android SDK 故意向您隐藏了这一点,因此您不应该尝试获取它,因为即使上面的代码确实有效,它也可能在未来的版本中不起作用(这实际上似乎是对它对我不起作用,因为我在 SDK 23 Marshmallow 中进行了测试。
所以,如果你想设置图标,你可以通过在你的主题中设置android:homeAsUpIndicator
来实现,按照建议here。
如果要检测主页按钮上的点击事件,正确的方法是覆盖onOptionsItemSelected
method of Activity
,例如
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
// do something
return true;
}
return false;
}
如 this post.
中其他人同意的那样,任何其他用途都将超出预期目的,因此不受支持
我没有找到 MenuItem
,但是,要以语法方式禁用主页按钮:
getSupportActionBar().setDisplayHomeAsUpEnabled(true/false)
这就是我需要的。但我仍然没有找到如何将其作为 MenuItem
.
我正在设置我的工具栏:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
toolbar.setTitle(R.string.app_name);
如何将主页按钮 (android.R.id.home
) 检索为 MenuItem
?
这是我尝试过的:
MenuItem back = menu.findItem(android.R.id.home);
但出于某种原因,这会造成 NullPointerException
。那么如何在不获取 NullPointerException
的情况下将其检索为 MenuItem
?
This SO answer,建议使用以下代码 ,但它似乎不起作用,我找不到任何其他代码。
getWindow().getDecorView().findViewById(android.R.id.home);
在任何情况下它都是 hacky,因为您不需要那个引用,并且在任何情况下您都不应该遍历视图层次结构来获取它。由于 Android SDK 故意向您隐藏了这一点,因此您不应该尝试获取它,因为即使上面的代码确实有效,它也可能在未来的版本中不起作用(这实际上似乎是对它对我不起作用,因为我在 SDK 23 Marshmallow 中进行了测试。
所以,如果你想设置图标,你可以通过在你的主题中设置android:homeAsUpIndicator
来实现,按照建议here。
如果要检测主页按钮上的点击事件,正确的方法是覆盖onOptionsItemSelected
method of Activity
,例如
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
// do something
return true;
}
return false;
}
如 this post.
中其他人同意的那样,任何其他用途都将超出预期目的,因此不受支持我没有找到 MenuItem
,但是,要以语法方式禁用主页按钮:
getSupportActionBar().setDisplayHomeAsUpEnabled(true/false)
这就是我需要的。但我仍然没有找到如何将其作为 MenuItem
.