【问题标题】:Is it possible to search within Fragments?是否可以在片段中搜索?
【发布时间】:2011-05-04 16:36:20
【问题描述】:
我有一个 Android 应用程序,我们正在移植到 Honeycomb/Android 3.0,我们在新界面中使用 Fragments。
我通过小部件进行搜索,如 here 所示。
问题是,使用Fragments 时,小部件不再弹出。所以问题是如何让搜索与Fragments 一起使用?
或者我怎样才能将这一行替换为Fragments?
getActivity().onSearchRequested();
【问题讨论】:
标签:
android
android-fragments
searchview
【解决方案1】:
我使用接口/回调解决了这个问题。
在我的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();
}
【解决方案2】:
你不能。 SearchManager 被实现为与Activitys 一起使用,而不是Fragments。请参阅this post 了解更多信息。