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

问题描述 投票:1回答:1

我需要得到一个参考资料 MenuItem的相应 View自定. 使用 findViewById() ID的菜单项返回null,当从 Activity#onCreate()onCreateOptionsMenu(). 然而,正如一些人所言 答案 对其他问题指出: findViewById() 是否 调用时返回视图 onOptionsItemSelected() 或从发布在 Activity#onCreate(),像这样...

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

所以,似乎在某些时候,安卓系统把。Menu 您在 onCreateOptionsMenu() 并创建相应的 View的,在屏幕上显示。A Runnable 发自 onCreate() 发生 以期在发生这种情况后被运行。但是,它感觉如此黑客假设将永远是这样的情况,而不是真正听某种类型的 menuViewsCreated() 事件。

所以,这就引出了我的问题- 是否 安卓系统提供了一个事件,告诉开发者,菜单 View已经创建了?

android android-menu
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.