我有一个我们正在移植到 Honeycomb/Android 3.0 的 Android 应用程序,我们Fragment在新界面中使用 s。
我通过小部件进行搜索,如此处所示。
Fragment问题是,使用s时,小部件不再弹出。所以问题是如何让搜索与Fragments 一起使用?
或者我怎样才能用Fragments 替换这条线?
getActivity().onSearchRequested();
我有一个我们正在移植到 Honeycomb/Android 3.0 的 Android 应用程序,我们Fragment在新界面中使用 s。
我通过小部件进行搜索,如此处所示。
Fragment问题是,使用s时,小部件不再弹出。所以问题是如何让搜索与Fragments 一起使用?
或者我怎样才能用Fragments 替换这条线?
getActivity().onSearchRequested();
我使用接口/回调解决了这个问题。
在我的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();
}
你不能。被SearchManager实现为与Activitys 一起使用,而不是与 s 一起使用Fragment。有关更多信息,请参阅此帖子。