5

在方向更改上,重新創建活動並重新創建日期時間對話框。 我想保存已由用戶更改的日期時間對話框的狀態。如何在方向更改時保留日期時間對話框的狀態?

在我關閉對話框之前我想保留日期時間對話框的狀態。

請注意,我可以關閉onSaveInstanceState中的對話框,其中有可用的包。但是,當活動進入暫停狀態時也會調用它,在這種情況下,我不想解除對話框。因此,決定在onDestroy方法上解僱它,但我沒有捆綁對象。這就是爲什麼我面臨這個問題。有什麼方法可以訪問onDestroy中的包?或者我的問題任何其他建議,將不勝感激。

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

基本上,我們鎖定的應用程序,如果用戶移動從我們的應用程序了,並在解鎖屏幕,他正在查看對話框將繼續。如果我們解除了onSavedInstanceState上的對話框,解鎖應用程序後,它會調用onRestart,啓動和恢復方法,其中沒有任何一個方法將Bundle的實例作爲參數提供。

此外,我們有單獨的橫向&縱向佈局,因爲我們無法在清單文件中設置configChanges =「orientation」。

+2

'DatePickerDialog'類具有'onSaveInstanceState()'和'onRestoreInstanceState()'方法。 –

回答

0

你仍然可以保留您的對話國onSaveIsntanceState()後知道的狀態,只是關閉對話框在onDestroy(),這應該滿足您的要求。雖然我不確定會在onDestroy()中完成對話解僱。

+0

是的,這是真的!並且工作正常,但我希望在解鎖設備後保留對話框,並且當我關閉onSaveInstanceState()中的對話框時,也會在活動進入暫停狀態時調用該對話框,在這種情況下,我不想關閉對話框。因此,決定在onDestroy方法上解僱它,但我沒有捆綁對象。 – AndroidGeeks

0

使用清單文件,下面的線actvity標籤

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

<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> 

,並覆蓋在您的活動的方法如下。

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

無需使用的onSaveInstanceState()和onRestoreInstanceState()

請讓我加入ablove代碼

+0

我已經更新了這個問題,並提到了我沒有使用configChanges的原因。 – AndroidGeeks

相關問題