我有一个Android应用程序正在移植到Honeycomb / Android 3.0,我们在新界面中使用Fragment
。
我通过小部件进行搜索,如here所示。
问题是,使用Fragment
时,小部件不再弹出。所以问题是如何让搜索与Fragment
一起使用?
或者如何替换此行以用于Fragment
s?
getActivity().onSearchRequested();
答案 0 :(得分:2)
我使用接口/回调解决了这个问题。
在我的MainActivity
中,我编写了一个回调接口:
private SearchRequestedCallback mSearchRequestedCallback;
public void setSearchRequestedCallback(SearchRequestedCallback callback) {
mSearchRequestedCallback = callback;
}
public interface SearchRequestedCallback {
void onSearchRequested();
}
在我的Fragment
中,我在onStart()
中设置回调,并在onStop()
中取消设置:
@Override
public void onStart() {
super.onStart();
getActivity().setTitle(getResources().getString(R.string.app_name));
((MainActivity)getActivity()).setSearchRequestedCallback(new SearchRequestedCallback() {
@Override
public void onSearchRequested() {
addFilter();
}
});
}
@Override
public void onStop() {
((MainActivity)getActivity()).setSearchRequestedCallback(null);
super.onStop();
}
答案 1 :(得分:0)
你做不到。实施SearchManager
是为了与Activity
合作,而不是Fragment
。有关详细信息,请参阅this post。