是否可以在 Fragments 内进行搜索?

发布于 2024-11-05 08:46:33 字数 412 浏览 3 评论 0原文

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

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

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

或者我如何替换这一行以与 Fragment 一起使用?

getActivity().onSearchRequested();

I have an Android application that we are porting over to Honeycomb/Android 3.0 and we are using Fragments in our new interface.

I have search working via the widget as shown here.

The problem is, the widget doesn't pop up any more when using Fragments. So the question is how do I get search to be used with Fragments?

Or how can I replace this line to be used with Fragments?

getActivity().onSearchRequested();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月下凄凉 2024-11-12 08:46:33

我使用接口/回调解决了这个问题。

在我的 MainActivity 中,我编写了一个回调接口:

private SearchRequestedCallback mSearchRequestedCallback;
public void setSearchRequestedCallback(SearchRequestedCallback callback) {
    mSearchRequestedCallback = callback;
}
public interface SearchRequestedCallback {
    void onSearchRequested();
}

在我的 Fragment 中,我在 onStart() 中设置了回调,并在 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();
}

I solved this problem using interface/callbacks.

In my MainActivity, I write a callback interface:

private SearchRequestedCallback mSearchRequestedCallback;
public void setSearchRequestedCallback(SearchRequestedCallback callback) {
    mSearchRequestedCallback = callback;
}
public interface SearchRequestedCallback {
    void onSearchRequested();
}

In my Fragment, I set the callback in the onStart() and unset it in the 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();
}
⊕婉儿 2024-11-12 08:46:33

你不能。 SearchManager 的实现是为了与 Activity 一起使用,而不是与 Fragment 一起使用。请参阅这篇文章了解更多信息。

You can't. The SearchManager is implemented to work with Activitys, not Fragments. See this post for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文