【问题标题】:How to send an SearchView Object within Bundle to Fragment from Activity如何将 Bundle 中的 SearchView 对象从 Activity 发送到 Fragment
【发布时间】:2016-04-14 12:33:03
【问题描述】:

我有一个 SearchView 对象。我想从MainActivity 发送到 Fragment (MyFragment.java)。

我正在使用setArguments() 方法。但是,我无法将searchView 对象绑定到包中。

这是我的代码。

searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
Bundle bundle = new Bundle();
bundle.putParcelable("searcObject",searchView);

MyFragment f1 = new MyFragment();

f1.setArguments(bundle);
trans.replace(R.id.fragment_container, f1).commit();

【问题讨论】:

  • 你真的认为,你正在做的事情是可能的吗??
  • 我不知道这是可能的还是不可能的..我是来学习的。
  • 如果是这种情况,那么您不可能以任何方式将视图对象从一个活动发送到另一个活动。您只能设置与该视图相关的值,例如文本、位置等。

标签: android android-fragments bundle searchview


【解决方案1】:

这是不可能的,因为视图不可打包/可序列化。完整解释请查看this问题

【讨论】:

  • 嗯..谢谢兄弟。我明白了。那么,有没有办法将视图对象发送到片段?
  • 您可以通过构造函数或使用setter方法将视图传递到片段中。如果您想与片段中的视图进行交互,最好实现回传接口。
【解决方案2】:

您需要传递 searchView.getQuery().toString() 数据以捆绑并在您的片段中获取此字符串

searchView.getQuery() // will return data

然后您可以在片段 searchView whit 中再次设置此数据

searchView.setQuery(string)

【讨论】:

    【解决方案3】:

    我认为您真正想要发送的是 Searchview 中的查询。

    所以你应该这样做

        String query = yourSearchView.getQuery().toString();
        Bundle bundle = new Bundle();
        bundle.putString("searcObject",query);
    

    【讨论】:

    • 我不想发送一个字符串..我想发送一个对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多