Android:隐藏自定义操作栏图标
我有一个带有自定义操作栏的活动,上面有一些图标 但在我的一个片段中,我想隐藏几个图标,但当我在fragment onActivityCreated()方法上执行此操作时,它会给出nullpointer异常 在我的基本活动中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
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);
}