片段菜单调用活动菜单

时间:2014-12-27 17:05:04

标签: android android-fragments

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

主要活动菜单:

 public boolean onOptionsItemSelected(MenuItem item) {


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

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

        return super.onOptionsItemSelected(item);
    }

片段菜单:

 @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;
    }

1 个答案:

答案 0 :(得分:0)

仅当活动不使用传递给片段的操作时。您可以在活动中添加一个布尔值,该布尔值会导致绕过该项目的开关。

@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设置按钮以及它做什么之外什么都不做。然后,这个片段将被您的新片段替换。