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