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?

Was dit nuttig?

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.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top