【问题标题】:How to pass HashMap<String, Object> through bundle arguments in fragment? [duplicate]如何通过片段中的捆绑参数传递 HashMap<String, Object>? [复制]
【发布时间】:2017-06-02 19:05:39
【问题描述】:

我正在尝试通过参数传递 HashMap。但是我在通过 getSeralizable 方法获取它时得到了空的 hashmap(我放置的 Hashmap 不是空的并且大小为 11)。以下是我的代码sn-p。

public static FirstPageFragment newInstance(boolean is_pending, HashMap<String, Object> result_map) {
    FirstPageFragment fragment = new FirstPageFragment();
    Bundle args = new Bundle();
    args.putBoolean(ARG_PARAM1, is_pending);
    args.putSerializable(ARG_PARAM2, result_map);
    fragment.setArguments(args);
    return fragment;
}

  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        Bundle b=getArguments();
        isPending = b.getBoolean(ARG_PARAM1);
        mResultMap = (HashMap<String, Object>)b.getSerializable(ARG_PARAM2);
    }

}

我们可以这样做吗?如果不能这样做,有没有其他方法可以做到这一点。

【问题讨论】:

    标签: android object serialization hashmap


    【解决方案1】:

    试试这个:

    Bundle extras = new Bundle();
    extras.putSerializable("YourHashMap",hashMap);
    intent.putExtras(extras);
    

    在另一个活动中

    Bundle bundle = this.getIntent().getExtras();
    
    if(bundle != null) {
       hashMap = bundle.getSerializable("YourHashMap");
    }
    

    https://developer.android.com/reference/java/util/HashMap.html

    HashMap ___

    扩展 AbstractMap 实现 Map、Cloneable、 可序列化

    【讨论】:

    【解决方案2】:

    您可以这样做,因为HashMap 实现是可序列化的

    【讨论】:

      【解决方案3】:

      使用putExtra(String key, Serializable obj) 插入HashMap,在另一个Activity 上使用getIntent().getSerializableExtra(String key),不过您需要将返回值转换为HashMap。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        • 2020-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多