繁体   English   中英

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

[英]Menu View creation in lifecycle

我需要在不指定自定义View情况下获取对MenuItem的相应View的引用。 当从Activity#onCreate()onCreateOptionsMenu()调用时,将findViewById()与菜单项的 ID 一起使用会返回 null。 但是,正如其他问题的一些答案所指出的那样, findViewById()在从onOptionsItemSelected()或从Activity#onCreate()发布的 runnable 调用时确实返回视图,就像这样......

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

因此,似乎在某些时候,Android 会采用您在onCreateOptionsMenu()填充的Menu并创建显示在屏幕上的相应View onCreate()发布的Runnable恰好在发生之后运行。 但是,假设情况总是如此,而不是实际侦听某种menuViewsCreated()事件,这感觉太menuViewsCreated()

所以这使我想到我的问题-没有Android的提供,告诉开发商菜单事件View ■找创建?

为时已晚,但它可能对其他人有所帮助,您必须在onCreateOptionsMenu(Menu menu)使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM