生命周期中的菜单视图创建

时间:2017-09-29 16:39:17

标签: android android-menu

我需要在没有specifying a custom one的情况下获得MenuItem对应View的引用。从findViewById()Activity#onCreate()调用时,将onCreateOptionsMenu()与菜单项的ID一起使用时返回null。但是,正如其他一些answers问题指出的那样,findViewById() 在从onOptionsItemSelected()Activity#onCreate()中发布的可运行状态调用时会返回视图 ,就像这样...

new Handler().post(new Runnable() {
    @Override
    public void run() {
        findViewById(R.id.some_view);
    }
});

因此,似乎在某些时候,Android会获取您在Menu中填充的onCreateOptionsMenu()并创建屏幕上显示的相应View。从Runnable 发布的onCreate()发生以便在发生后运行。但是,如果认为情况总是如此,而不是真正倾听某种menuViewsCreated()事件,那真是太可笑了。

所以这让我想到了我的问题 - Android提供了一个事件,告诉开发人员菜单View已被创建?

1 个答案:

答案 0 :(得分:0)

已经晚了,但可能会对其他人有所帮助 您必须在new Handler()

中使用onCreateOptionsMenu(Menu menu)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.section, menu);

    new Handler().post(new Runnable() {
        @Override
        public void run() {

            final View menuItemView = findViewById(R.id.menu_item);
            //TODO

        }
    });


    return true;
}