设置后清除工具栏菜单(启动活动时)

工具栏菜单在片段中膨胀,但随后被清除。


首次创建(或旋转)活动时,工具栏菜单会在片段中正确膨胀,但在显示之前会被清除。


我在我的片段中设置了工具栏菜单onActivityCreated,它在活动中保持设置状态onResume。我发现的下一个电话是在onCreateOptionsMenu活动中,但此时toolbar.getMenu().size() = 0


介于两者之间的某处onResume,onCreateOptionsMenu工具栏菜单正在重置。


编辑:我不确定重现它需要什么,但这里是相关代码的全部(?)。活动:


    private Toolbar toolbar;

    private DrawerLayout drawer;

    private ActionBarDrawerToggle toggle;

    private FloatingActionButton fab;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.drawer_main);

        toolbar = findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);

        fab = findViewById(R.id.main_fab);

        drawer = findViewById(R.id.drawer_layout);

        toggle = new ActionBarDrawerToggle(this, drawer,toolbar,R.string.nav_drawer_open,R.string.nav_drawer_close);

        drawer.addDrawerListener(toggle);

        NavigationView navigationView = findViewById(R.id.nav_view);

        navigationView.setNavigationItemSelectedListener(this);

        if (savedInstanceState == null) {

            showFragment(ScheduleFragment.newInstance());

        }

    }

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        if(toggle.onOptionsItemSelected(item)) {

            return true;

        }

        return super.onOptionsItemSelected(item);

    }

    @Override

    protected void onPostCreate(Bundle savedInstanceState) {

        CharSequence retainTitle = toolbar.getTitle();

        super.onPostCreate(savedInstanceState);

        toggle.syncState();

        toolbar.setTitle(retainTitle);

    }


翻翻过去那场雪
浏览 51回答 1
1回答

烙印99

我当前发布的代码中的问题是该行setSupportActionBar(toolbar);这不是必需的,实际上导致了上述令人不安的生命周期问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java