0

アプリケーションが向きの変更のみで初めて読み込まれる場合にのみ、ダイアログを表示する方法について現在混乱しています。タブで構成されるアクティビティが 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()
4

1 に答える 1

0

アプリケーションの再起動時やアクティビティのリロード時に失われないように、共有設定に保存する必要があると思います。

編集 :

まず、次の行をマニフェストに追加します (まだ行っていない場合)。

android:configChanges="orientation"

これを追加すると、向きが変わったときにアクティビティを再開できなくなります。その場合、アクティビティの onCreate() メソッドの開始時にFirstTimeActivityOpenedを true に設定し、onDestroy() で false に設定できます。

これで、向きがいつ変わるかはすでにわかっています。したがって、変更された場合、アプリが初めて開かれる場合は、ダイアログを表示する必要があります。

お役に立てれば

于 2013-09-12T07:05:56.447 に答える