是否可以在Fragments中搜索?

时间:2011-05-04 16:36:20

标签: android android-fragments searchview

我有一个Android应用程序正在移植到Honeycomb / Android 3.0,我们在新界面中使用Fragment

我通过小部件进行搜索,如here所示。

问题是,使用Fragment时,小部件不再弹出。所以问题是如何让搜索与Fragment一起使用?

或者如何替换此行以用于Fragment s?

getActivity().onSearchRequested();

2 个答案:

答案 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