5

Bei der Änderung der Ausrichtung wird die Aktivität erneut erstellt und das Dialogfeld "Datum/Uhrzeit" wird ebenfalls neu erstellt. Ich möchte den Dialog für den Status der Datumszeit speichern, der vom Benutzer geändert wurde.Wie wird der Status von datetime Dialog zur Orientierungsänderung beibehalten?

Bevor ich den Dialog abbringe Ich möchte den Status des Date Time Dialog beibehalten.

Hinweis, ich kann den Dialog in onSaveInstanceState, wo ich das Bundle verfügbar habe, ablehnen. Es wird aber auch aufgerufen, wenn die Aktivität in den Status pausiert wechselt. In diesem Fall möchte ich den Dialog nicht schließen. Daher entschieden, es auf OnDestroy-Methode zu entlassen, aber ich habe das Bundle-Objekt nicht dort. Deshalb stehe ich vor diesem Problem. Gibt es eine Möglichkeit, auf das Bundle in onDestroy zuzugreifen? Oder irgendein anderer Vorschlag für mein Problem würde geschätzt werden.

@Override 
protected void onDestroy() { 
    if(dateTimeDialog !=null && dateTimeDialog.isShowing()) 
    { 
     //<HERE I WANT THE STATE TO BE SAVED IN THE BUNDLE> 
     dateTimeDialog.dismiss(); 
    } 
    super.onDestroy(); 
} 

Grundsätzlich sperren wir die Anwendung, wenn der Benutzer unserer Anwendung abrücken und auf den Bildschirm entsperren und das Dialog er wieder aufgenommen betrachtet. Und wenn wir den Dialog onSavedInstanceState ablehnen, nach dem Entsperren der Anwendung, ruft er OnRestart auf, starten Sie Methoden und führen Sie sie fort, wobei keiner von ihnen die Instanz von Bundle als Parameter enthält.

Auch haben wir separate Layouts für Querformat & Hochformat, wegen denen wir nicht die ConfigChanges = "Ausrichtung" in der Manifest-Datei festlegen können.

+2

Die 'DatePickerDialog' Klasse hat' onSaveInstanceState() 'und' onRestoreInstanceState() 'Methoden. –

Antwort

0

Hinzufügen Sie noch Ihren Dialog Zustände in onSaveIsntanceState() behalten können, aber entlassen nur den Dialog in onDestroy(), die Ihre Anforderung erfüllen sollte. Ich bin mir allerdings nicht sicher, was ein Dialog bei onDestroy() abstellen würde.

+0

Ja, das stimmt! und funktioniert gut, aber ich wollte den Dialog nach dem Entsperren meines Geräts beibehalten und wenn ich den Dialog in OnSaveInstanceState() ablehnen wird es auch aufgerufen, wenn die Aktivität im angehaltenen Zustand geht, und in diesem Fall möchte ich das Dialogfeld nicht verlassen. Daher entschieden, es auf OnDestroy-Methode zu entlassen, aber ich habe das Bundle-Objekt nicht dort. – AndroidGeeks

0

die unterhalb der Linie in Manifest-Datei in Tags actvity

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 

wie

<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
    android:name="com.example.demo.MainActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

und außer Kraft setzt unter der Methode in Ihrer Tätigkeit nutzen.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
} 

Keine Notwendigkeit zu verwenden onSaveInstanceState() und onRestoreInstanceState()

Bitte lassen Sie mich Status kennen nach ablove Code

+0

Ich habe die Frage aktualisiert und den Grund erwähnt, warum ich die configChanges nicht verwende. – AndroidGeeks

Verwandte Themen