片段android中的菜单项调用两次

Posted

技术标签:

【中文标题】片段android中的菜单项调用两次【英文标题】:Menu item call twice in fragment android 【发布时间】:2015-11-25 03:08:58 【问题描述】:
In fragment when i click on menu item , it calls function twice one is from previous fragment and other one is from existing fragment.

Fragment 1:
     @Override
        public void onActivityCreated(Bundle savedInstanceState) 
            super.onActivityCreated(savedInstanceState);
            setHasOptionsMenu(true);
        
        @Override
        public boolean onOptionsItemSelected(MenuItem item) 
            if(item.getItemId() == R.id.refresh)
                RetryCallMap();
                return true;
            else
            return false;
        
Fragment 2:
     @Override
        public void onActivityCreated(Bundle savedInstanceState) 
            super.onActivityCreated(savedInstanceState);
            setHasOptionsMenu(true);
        
        @Override
        public boolean onOptionsItemSelected(MenuItem item) 
            if(item.getItemId() == R.id.refresh)
                RetryCall();
                return true;
            else
            return false;
        
MainActivity :

    @Override
        public boolean onCreateOptionsMenu(Menu menu) 
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        

        @Override
        public boolean onOptionsItemSelected(MenuItem item) 
            int id = item.getItemId();
            if (id == R.id.map) 
                pushFragments("mapFragment", new MapFragment(), true, true);
                return true;
            
            if (id == android.R.id.home) 
                this.drawerLayout.openDrawer(drawableListView);
                return true;
            
            return super.onOptionsItemSelected(item);
        

这些是片段和我的 MainActivity,我正在通过单击菜单项来刷新片段,这样如果在获取时未找到 Internet 连接或发生任何其他问题,我可以刷新页面。

【问题讨论】:

所以检查片段在onOptionsItemSelected()中可见 请粘贴上一个片段的菜单代码以便更好地参考。 我们也有同样的问题。请在片段及其父活动的所有父布局中尝试 android:clickable="true" android:focusableInTouchMode="true"。 【参考方案1】:

在 onOptionsItemSelected() 函数中返回 true 对我有用。

 @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        if(item.getItemId() == R.id.refresh)
            RetryCall();
            return true;
        else
        return true;
    

【讨论】:

以上是关于片段android中的菜单项调用两次的主要内容,如果未能解决你的问题,请参考以下文章

如何将片段目标绑定到底部导航栏中的菜单项?

Android - 导航抽屉 - 与动态菜单项重叠的片段

android:来自片段的菜单项单击事件

片段的菜单项 onClickListener

如何在 Android 中显示和隐藏菜单项?

无法接收点击片段中的菜单项