在活动生命周期中,在android中查看菜单项的正确方式和正确时间是什么



到目前为止,我已经尝试了,但没有成功:

  • menuItemxml中设置android:actionViewClass="android.widget.ImageView",在activityonCreateOptionsMenu中在menuItem 上使用getActionView

  • onCreateOptionsMenu()onPrepareOptionsMenu()onResume()中调用findViewById(menuItemId)。(视图始终为null(

什么有效?

  • onCreateOptionsMenu()中,我使用new Handler().post(new Runnable())调用findViewById(menuItemId)。这很管用

问题是什么?

我对代码结构不满意。它不可读。我相信一定有更好的方法可以做到这一点!

我需要这些问题的答案:

  1. 获取菜单项视图正确方法是什么
  2. 活动生命周期中查看menuItem的正确时间是什么

第一种方法是正确的。您可以在onCreateOptionsMenu()中获得菜单项的ActionView。为此,您需要定义MenuItem的布局,如app:actionLayout="@layout/myLayout"

示例可在上找到https://stackoverflow.com/a/26259527/1505074

这个答案可能对编辑问题之前的"在我的应用程序中显示活动菜单项视图上的覆盖"问题有所帮助。

我是如何在菜单项上显示ShowcaseView的是通过使用Toolbar。所以在Create((内部,你可以做的是-

Target target = new ViewTarget(getToolBar().getChildAt(0));
new ShowcaseView.Builder(this)
                .setTarget(target)
                .build();

new getChildAt(0)将为您提供主页按钮。类似地,对于其他图标,您可以尝试在getChildAt()方法中更改参数。

最新更新