我有一个自定义操作栏的活动,上面有一些图标。现在这个自定义操作栏对于所有碎片都是通用的
但是在我的一个片段中,我想隐藏几个图标。但是当我在片段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的操作栏图标
答案 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);
}