相关疑难解决方法(0)

隐藏/显示不同片段的操作栏选项菜单项

我有一个Sherlock片段活动,其中有3个片段.

片段A,片段B,片段C是三个片段.我想仅在片段B中显示完成选项菜单.

并且活动以片段A开始.当选择片段B时,添加完成按钮.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    if(!menusInflated){
        inflater.inflate(R.menu.security, menu);
        menusInflated=true;
    }

    super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)

当我再次启动Fragment AI想要选项菜单DONE(在片段B中设置)为此我就是这样做的

setHasOptionsMenu(false);
MenuItem item = (MenuItem) menu.findItem(R.id.done_item);
item.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

但是这根本就没有隐藏,如果首次使用Fragment A启动Activity,它也会给出NullPointerException.

请告诉我这是什么问题.

android actionbarsherlock android-fragmentactivity

55
推荐指数
5
解决办法
10万
查看次数

Android - 如何隐藏当前片段的菜单选项

我有一个带有FrameLayout和菜单的ActionBar活动.当用户点击菜单项时,我用相关的新片段替换片段.但是,我看不到一种明显的方法来删除所选片段的菜单项.

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null) {
            StudyFragment startFragment = new StudyFragment();
            startFragment.setArguments(getIntent().getExtras());
            getSupportFragmentManager().beginTransaction().add
                                      (R.id.container, startFragment).commit();
        }
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        switch (id) {
        case R.id.action_study:
            replaceFragment((Fragment)new StudyFragment());
            break;
        case R.id.action_list: 
            replaceFragment((Fragment)new ListFragment());
            break;
        // etc
        }
        return super.onOptionsItemSelected(item);
    }

    private void replaceFragment(Fragment f) {
        FragmentTransaction transaction =
                                getSupportFragmentManager().beginTransaction(); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

6
推荐指数
3
解决办法
1万
查看次数