Android:隐藏自定义操作栏图标

Android:隐藏自定义操作栏图标,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,我有一个带有自定义操作栏的活动,上面有一些图标 但在我的一个片段中,我想隐藏几个图标,但当我在fragment onActivityCreated()方法上执行此操作时,它会给出nullpointer异常 在我的基本活动中 LayoutInflater mInflater = LayoutInflater.from(this); View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null); get

我有一个带有自定义操作栏的活动,上面有一些图标

但在我的一个片段中,我想隐藏几个图标,但当我在fragment onActivityCreated()方法上执行此操作时,它会给出nullpointer异常

在我的基本活动中

LayoutInflater mInflater = LayoutInflater.from(this);
View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);


        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setCustomView(mCustomView);
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(false);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
在我的片段中

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        ImageView imageView1 = (ImageView) getView().findViewById(R.id.imageView1);
        imageView1.setVisibility(View.GONE);
}

如何使用广播方法隐藏特定于fragement的actionbar图标很简单。 在基本活动中:

    IntentFilter filter1;

    @Override
    public void onCreate() {
        filter1 = new IntentFilter("hide_actoinbar");
        registerReceiver(myReceiver, filter1);
    }


    private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            hideActionbar(); // your method
        }
    };

    @Override
    public void onDestroy() {
        unregisterReceiver(myReceiver);
    }
片段:

 public void broadcastIntent()
    {
       Intent intent = new Intent();
       intent.setAction("hide_actoinbar");
       sendBroadcast(intent);
    }

在活动中创建方法,如下所示

public void hideImageIcon(){
    ImageView imageView1 = (ImageView)findViewById(R.id.imageView1);
    imageView1.setVisibility(View.GONE);
}
从片段调用此方法

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    ((MainActivity) getActivity()).hideImageIcon();
}

您可以通过以下方式访问活动的组件:

((YourActivity)getActivity()).imageView1.setVisibility(View.GONE);

要更改菜单项的可见性,只需调用InvalidateOptions菜单()并在重写的OnCreateOptions菜单()方法中隐藏这些项

@覆盖
公共布尔onCreateOptions菜单(菜单)
{ 
//从xml中展开菜单
MenuInflater充气器=getSupportMenuInflater();
充气机。充气(右菜单。设置,菜单);
对于(int i=0;i
@AmitVaghela SO要求等待几分钟再接受答案。Dhawal和Ersani回答都有效。
@Override 
public boolean onCreateOptionsMenu(Menu menu)
{ 
    // inflate menu from xml 
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.settings, menu);

            for (int i = 0; i < menu.size(); i++)
            menu.getItem(i).setVisible(false);

}