我在Android上有一个菜单,想要在点击菜单项后随时随地显示一个简单的小吃吧.无论我把别的什么东西放在"???" 不起作用.整个应用程序来自Android studio默认选项卡视图模板.这是我的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Snackbar.make("????", "Pressed Setting", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
if (id == R.id.help_settings) {
Snackbar.make("???", "Pressed Help", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
为什么它表现得那样?我该如何解决?
Moh*_*uag 10
更改
Snackbar.make("???", ....)
Run Code Online (Sandbox Code Playgroud)
至
Snackbar.make(getWindow().getDecorView(), .....);
Run Code Online (Sandbox Code Playgroud)
你必须通过一个View到Snackbar的静态 make方法.
这是您Snackbar在菜单项单击时显示的方式:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Snackbar.make(this.findViewById(R.id.action_settings), "Pressed Setting", Snackbar.LENGTH_LONG).show();
}
if (id == R.id.help_settings) {
Snackbar.make(this.findViewById(R.id.help_settings), "Pressed Help", Snackbar.LENGTH_LONG).show();
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)