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

时间:2016-02-25 09:49:34

标签: android android-fragments android-actionbar

我有一个自定义操作栏的活动,上面有一些图标。现在这个自定义操作栏对于所有碎片都是通用的

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

在我的BaseActivity中

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的操作栏图标

4 个答案:

答案 0 :(得分:2)

您可以通过

访问活动的组件
((YourActivity)getActivity()).imageView1.setVisibility(View.GONE);

答案 1 :(得分:0)

使用广播方法很简单。 在baseActivity中:

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

答案 2 :(得分:0)

在下面的活动中创建方法

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();
}

答案 3 :(得分:0)

要更改菜单项的可见性,您只需调用invalidateOptionsMenu()并隐藏已覆盖的onCreateOptionsMenu()方法中的项目。

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

}