如何通过片段中的bundle参数传递HashMap <string,object =“”>?

时间:2017-01-18 11:57:15

标签: android object serialization hashmap

我试图通过参数传递HashMap。但是我通过getSeralizable方法得到空的hashmap(我放的Hashmap不是空的&amp;大小为11)。以下是我的代码片段。

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);
    }

}

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

3 个答案:

答案 0 :(得分: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 implements Map,Cloneable,   的序列化

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用putExtra(String key, Serializable obj)插入HashMap,另一个活动使用getIntent().getSerializableExtra(String key),但您需要将返回值转换为HashMap