recorrer - putExtra treeMap returns HashMap no se puede convertir a TreeMap para Android
treemap en java ejemplos (3)
Necesito tu ayuda, no puedo entender lo que está pasando?
Estoy tratando de enviar un TreeMap entre 2 actividades, el código es algo como esto:
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
}
}
Esto me devuelve que HashMap no se puede convertir a TreeMap. Qué
Como alternativa a las sugerencias de @Jave, si realmente necesita que la estructura de datos sea un TreeMap
, simplemente use el constructor apropiado que tome otro mapa como fuente de datos. Entonces en el extremo receptor ( Two
) haga algo como:
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"));
}
}
Sin embargo, dependiendo de su proyecto, probablemente no tenga que preocuparse por la implementación exacta del Map
. Entonces, en lugar de eso, puedes lanzar a la interfaz de 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");
}
}
En lugar de TreeMap
el resultado directamente a un TreeMap
, puede crear un nuevo TreeMap<String, String>
y usar el método putAll()
:
TreeMap<String, String> myMap = new TreeMap<String, String>;
HashMap<String, String> receivedMap = getIntent().getExtras().get("map");
myMap.putAll(receivedMap);
Parece que se serializa en un HashMap y eso es lo que está obteniendo. Supongo que tendrás que conformarte con un HashMap. Alternativamente, puede crear su propia clase de ayuda e implementar Parcelable, luego serializar las claves / cadenas en orden.