如何在Android中将Bundle中的MenuItem传递给对话框片段
我需要传递如何在Android中将Bundle中的MenuItem传递给对话框片段,android,android-fragments,bundle,Android,Android Fragments,Bundle,我需要传递MenuItem generateProgress=menu.findItem(R.id.generate\u movie)到我的DialogFragment的newInstance,在此实例中,将其与包一起传递到onCreateDialog public void showGifDialog() { DialogFragment newFragment = GenerateGifDialogFragment.newInstance(generateProgress);
MenuItem generateProgress=menu.findItem(R.id.generate\u movie)
到我的DialogFragment的newInstance
,在此实例中,将其与包一起传递到onCreateDialog
public void showGifDialog() {
DialogFragment newFragment = GenerateGifDialogFragment.newInstance(generateProgress);
newFragment.show(getFragmentManager(), "generateGif");
}
及
我如何通过内置Android界面?我应该创建一个类并扩展它吗?还是更好的方法,比如从getActivity()
直接调用菜单,从Fragment类中查找Item?我也做了类似的事情,在我的活动中创建一个方法,然后通过getActivity()
访问它。下面是一个例子:
private boolean mProgressShown;
private MenuItem mSearchItem;
private SearchView mSearchView;
private View mProgressView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Prepare progress layout for usage later
mProgressView = LayoutInflater.from(this).inflate(R.layout.progress_icon, null);
...
}
public void showProgressIcon() {
if (mSearchItem != null && !mProgressShown) {
mProgressShown = true;
mSearchItem.setActionView(mProgressView);
}
}
public void hideProgressIcon() {
if (mSearchItem != null && mProgressShown) {
mProgressShown = false;
mSearchItem.setActionView(mSearchView);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mSearchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) mSearchItem.getActionView();
...
}
然后从我的片段中我会称之为:
((MainActivity)getActivity).showProgressIcon();
((MainActivity)getActivity).hideProgressIcon();
为什么要将MenuItem的副本传递给另一个类/片段?我想调用generateProgress.setActionView(R.layout.actionbar\u Undeterminate\u progress)代码>因此它在实际图标的位置上显示加载图标。
((MainActivity)getActivity).showProgressIcon();
((MainActivity)getActivity).hideProgressIcon();