4

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

我通过小部件进行搜索,如此处所示

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

或者我怎样才能用Fragments 替换这条线?

getActivity().onSearchRequested();
4

2 回答 2

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();
}
于 2014-07-24T17:20:44.623 回答
0

你不能。被SearchManager实现为与Activitys 一起使用,而不是与 s 一起使用Fragment。有关更多信息,请参阅此帖子

于 2012-07-02T20:38:23.937 回答