5

オリエンテーションの変更で、アクティビティが再作成され、[日時の設定]ダイアログボックスも再作成されます。 ユーザーが変更した日付時刻ダイアログの状態を保存します。datetimeの状態を保持する方法オリエンテーション変更のダイアログ?

私がダイアログを閉じる前に私は、Date Time Dialogの状態を保持したいと思います。

注意:ダイアログを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

を追加した後の状態を知らせますが、唯一のダイアログを閉じてください。 onDestroy()で、あなたの要件を満たす必要があります。私はonDestroy()で対話を解消することができないのかどうかはわかりませんが。

+0

はい、それは本当です!うまく動作しますが、デバイスのロックを解除した後でダイアログを保持したかったので、onSaveInstanceState()でダイアログを閉じると、アクティビティが一時停止状態になると呼び出されます。その場合、ダイアログを閉じる必要はありません。したがって、それをonDestroyメソッドで却下することに決めましたが、そこにバンドルオブジェクトはありません。 – AndroidGeeks

0

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> 

ようactvityタグにマニフェストファイルに以下の行を使用して、活動の方法の下にオーバーライドします。

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

onSaveInstanceState()とonRestoreInstanceState()

を使用する必要はありません、私はあなたがまだonSaveIsntanceState()であなたのダイアログの状態を保持することができabloveコード

+0

私は質問を更新し、私がconfigChangesを使用していない理由を述べました。 – AndroidGeeks

関連する問題