在Android中显示菜单点击事件的小吃栏

Ami*_*mir 8 java android

我在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)

你必须通过一个ViewSnackbar静态 make方法.


act*_*e93 5

这是您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)