0

我目前对如何仅在应用程序第一次仅在方向更改时加载时如何显示我的对话框感到困惑。我只有一项由选项卡组成的活动。

问题:

我尝试使用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();

            }};

加载对话框

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