java - 如何从 Activity 外部扩展 SupportActionBar 菜单

标签 java android kotlin android-actionbar android-toolbar

我将 View 与我的 Activity 分离,并且我有一个单独的类用于所有与 UI 相关的操作。我想在那里实现的一项操作是为 Action Bar 扩充菜单。我尝试做这些事情,但都不起作用。

fun displayMenu() {

    rootView.toolbar.inflateMenu(R.menu.my_menu)

    rootView.toolbar.setOnMenuItemClickListener { item ->
        if (item.itemId == R.id.action_one) {
            listener.onActionOne()
        }

        true
    }
}

我试过这个:

activity.menuInflater.inflate(R.menu.my_menu, rootView.toolbar.menu)

还有这个:

rootView.toolbar.inflateMenu(R.menu.my_menu)

但这些都无法完成工作。如何扩充此菜单?

最佳答案

这都是我愚蠢的错误。

activity.menuInflater.inflate(R.menu.my_menu, rootView.toolbar.menu)

工作得很好。请记住在 Activity.onCreateOptionMenu 期间或之后调用它。使它起作用的完整示例是这样的:

public class MyActivity extends AppCompatActivity {

@Inject
MyView myView;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(myView.getRootView());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    myView.displayMenu();
    return super.onCreateOptionsMenu(menu);
}

}

public class MyViewImpl implements MyView {

    @Override
    public void displayMenu() {
        activity.getMenuInflater().inflate(
            R.menu.categories_modification_menu,
            rootView.findViewById(R.id.toolbar).getMenu()
        )
    }

}

我之前使用了 Activity.onCreate 中的 displayMenu()...抱歉浪费您的时间,特别是我没有发布这部分,因为我认为它与问题无关...

关于java - 如何从 Activity 外部扩展 SupportActionBar 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53762920/

相关文章:

java - 回收器 View : No adapter attached; skipping layout (no shw Slider and photos Picasso and Sliderbanner

java - 如何使用java实现expect "interact"命令

java - Camera 2 API 问题,图像始终以横向模式显示

java - 在android中获取2D ArrayList内的值?

android - 如何在 Kotlin 中将以下 Observables 合并为一个?

Android导航组件从homefragment关闭应用程序

java - jodaTime periodFormatter 格式不正确

java - 知道在 Windows 机器上要杀死哪个 java.exe 进程

Java Ribbon - Flamingo 不会 run() 可运行的 JPanel

java - 绘制网格和纹理 libgdx