Ich versuche den Kartentyp zu speichern, den der Benutzer über das Menü ausgewählt hat, sodass der Kartentyp auch dann beibehalten wird, wenn das Gerät gedreht wird oder die Aktivität für einige Momente ausgesetzt wird. Das habe ich gemacht, aber es scheint nicht zu funktionieren. Kannst du mir bitte sagen, was mache ich falsch?onSaveInstanceState funktioniert nicht
private int mapTypeSelected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null){
mapTypeSelected = GoogleMap.MAP_TYPE_NORMAL;
} else {
mapTypeSelected = savedInstanceState.getInt("the_map_type",GoogleMap.MAP_TYPE_NORMAL);
}
}
Mein Hauptmenü mehr Auswahl hat, aber ich hinzugefügt hier nur die relevantesten für den Kartentyp:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.change_map_type:
Toast.makeText(getApplicationContext(), "Change map type", Toast.LENGTH_LONG).show();
return true;
case R.id.map_type_normal:
mapTypeSelected = GoogleMap.MAP_TYPE_NORMAL;
mMap.setMapType(mapTypeSelected);
return true;
case R.id.map_type_satellite:
mapTypeSelected = GoogleMap.MAP_TYPE_SATELLITE;
mMap.setMapType(mapTypeSelected);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Dann am Ende meiner Tätigkeit ich diese beiden hinzugefügt:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("the_map_type", mapTypeSelected);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
savedInstanceState.get("the_map_type");
}
Ich bin sicher, das ist etwas dummes, dass ich falsch mache, aber ich kann nicht scheinen, was zu sehen. Es gibt keinen Fehler und alles funktioniert gut, nur dass bei Rotation der Kartentyp immer auf normal wechselt. Vielen Dank im Voraus für jede Hilfe!
Das ist nicht der Grund. Das war ein Schreibfehler, den ich gemacht habe. Jetzt ist es korrigiert. –
Sie legen den Kartentyp nicht außerhalb des 'onOptionsItemSelected' fest ... Sie können es direkt nach dem Erhalten von' mMap' instance – Selvin
ausführen. Können Sie etwas expliziter sein? –