首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段菜单调用活动菜单

片段菜单调用活动菜单
EN

Stack Overflow用户
提问于 2014-12-27 17:05:03
回答 1查看 468关注 0票数 0

我有一个活动菜单,在一个片段上,我想替换该菜单中的一个项目。按下该项目将启动一个活动。我的片段菜单项工作,但它也调用活动菜单项意图。我需要删除重复的主活动菜单项也被选中。

主要活动菜单:

代码语言:javascript
复制
 public boolean onOptionsItemSelected(MenuItem item) {


       else if(itemId == R.id.action_settings)

            startActivity (new Intent(getApplicationContext(),
                    PreferencesActivity.class));

        return super.onOptionsItemSelected(item);
    }

片段菜单:

代码语言:javascript
复制
 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_settings:
                startActivity(new Intent(getActivity(),
                        PreferencesFragment.class));
                return false;

            default:
                break;
        }

        return false;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-27 17:32:42

只有当该活动不使用该操作时,它才会被传递给该片段。您可以在活动中添加一个布尔值,该布尔值将导致该项的切换被绕过。

代码语言:javascript
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (!isMyFragmentPresent()) {
        switch (item.getItemId()) {
            case R.id.action_settings:
                startActivity(new Intent(getApplicationContext(),
                    PreferencesActivity.class));
                return true;
            default:
                break;
        }
    }

    return false;
}

public void setMyFragmentIsPresent(boolean isMyFragmentPresent) {
    this.isMyFragmentPresent = isMyFragmentPresent;
}

更新:我意识到,如果你有比你想要改变的项目更多的东西,这是行不通的。也许您最好在活动中加载一个默认片段,它只会加载R.id.action_settings设置按钮和它所做的事情。然后,这个片段将被您的新片段替换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27669475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档