アプリケーションが向きの変更のみで初めて読み込まれる場合にのみ、ダイアログを表示する方法について現在混乱しています。タブで構成されるアクティビティが 1 つだけあります。
問題:
boolean
変数を使用してみpreferences
ましたが、アクティビティのビューが破棄されている場合に変数を配置する場所がわかりません。破棄は、アプリを終了するか、向きを変えることによって行われます。第二に、向きの変更中にダイアログが最初に再度表示されるはずですが、ダイアログを閉じて向きの変更を行っても、ダイアログが再度表示されますが、これは発生しないはずです。を使用しないことを好みonConfigurationChanged(Configuration)
ます。
boolean FirstTimeActivityOpened = true;
boolean dialogDismissed = false;
boolean orientationChanged = false;
++++++++++
if(FirstTimeActivityOpened && dialogDismissed && orientationChanged ){
loadDialog(this);
}
new OrientationEventListener(MainActivity.this,
SensorManager.SENSOR_DELAY_NORMAL){
@Override
public void onOrientationChanged(int orientation) {
// TODO Auto-generated method stub
orientationChanged = true;
//Toast.makeText(MainActivity.this, "onOrientationChanged"+ orientation, Toast.LENGTH_SHORT).show();
}};
loadDialog
dialog.setOnDismissListener(new OnDismissListener(){
@Override
public void onDismiss(DialogInterface arg0) {
// TODO Auto-generated method stub
dialogDismissed = true;
Toast.makeText(MainActivity.this, "Dialog Dismissed", Toast.LENGTH_SHORT).show();
}});
+++++++++++++
@Override
public void onDestroy() {
super.onDestroy();
if(dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
//or
if(dialog != null) {
dialog.dismiss();
}
}
私は勉強中に次のことを知りました。
最初のロード:
onCreate()
onStart()
onResume()
変更または向き:
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onRestoreInstantState()
onResume()
アクティビティは表示されませんが、破棄されません
onPause()
onStop()
一時停止状態から開始されたアクティビティ:
onRestart()
onStart()
onResume()
アクティビティが表示されず、破棄されました:
onPause()
onStop()
onDestroy()
アクティビティの破棄と再開
onCreate()
onStart()