Verander opset bondel data voor 'n aktiwiteit is weer geskep nadat oriëntasie verandering
-
05-07-2019 - |
Vra
Ek het 'n kennisgewing dat my aktiwiteit begin en gaan 'n boodskap met behulp van putExtra () funksie gee terug Die bedoeling is. Die boodskap word dan vertoon aan die gebruiker in OnCreate funksie die aktiwiteit se. Wanneer die aansoek begin word as gevolg van 'n oriëntasie verandering, is die boodskap weer gewys as dit is nog steeds in die bundel data die bedoeling nie.
Hoe kan ek die ekstra data verwyder?
Ek het probeer om die volgende:
Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
// ... show message that is in bundle.getString("message")
// remove message
bundle.remove("showMessage");
}
Maar die boodskap sal nog gewys word na die oriëntasie verander, lyk soos die bedoeling gebruik is nie die een wat ek verander het, maar die oorspronklike een. Die enigste tydelike oplossing het ek gevind is om die ShowMessage addisioneel red in onSaveInstanceState()
.
Is daar 'n ander manier? Of is dit die pad om te gaan?
Oplossing
Die (eenvoudige) oplossing is:
In plaas van 'n beroep
bundle.remove("showMessage");
Ek nou gebruik
getIntent().removeExtra("showMessage");
wat werk soos verwag. Lyk soos getIntent (). GetExtras () 'n afskrif, nie 'n verwysing terug.
Ander wenke
Jou onSaveInstanceState()
benadering is die regte antwoord, AFAIK.