putExtra treeMap返回HashMap无法强制转换为TreeMap android

use*_*074 7 android hashmap treemap android-intent

我需要你的帮助,我无法理解发生了什么?

我正在尝试在2个活动之间发送TreeMap,代码是这样的:

class One extends Activity{
 public void send(){
   Intent intent = new Intent(One.this, Two.class);
   TreeMap<String, String> map = new TreeMap<String, String>();
   map.put("1","something");
   intent.putExtra("map", map);
   startActivity(intent);
   finish();
 }
}

class Two extends Activity{
  public void get(){
  (TreeMap<String, String>) getIntent().getExtras().get("map");//Here is the problem
  }
}
Run Code Online (Sandbox Code Playgroud)

这回到我身边HashMap无法强制转换为TreeMap.什么

MH.*_*MH. 3

作为 @Jave 建议的替代方案,如果您确实需要数据结构为 a TreeMap,只需使用适当的构造函数将另一个映射作为数据源。因此,在接收端 ( Two) 执行以下操作:

public class Two extends Activity {
    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TreeMap<String, String> map = new TreeMap<String, String>((Map<String, String>) getIntent().getExtras().get("map"));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,根据您的项目,您可能不必担心确切的Map实现。因此,您可以直接转换为Map接口:

public class Two extends Activity {
    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Map<String, String> map = (Map<String, String>) getIntent().getExtras().get("map");
    }
}
Run Code Online (Sandbox Code Playgroud)