簡體   English   中英

應用首次加載和處理方向更改時顯示對話框

[英]Display Dialog on App's first load and Handling Orientation Changes

目前,我對只有在首次使用方向更改加載應用程序時才顯示對話框的方法感到困惑。 我只有一個由標簽組成的活動。

問題:

我嘗試使用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();
         }

  }

我在學習期間發現:

FirstLoad:

onCreate()
onStart()
onResume()

變更或方向:

onPause()
onStop()
onDestroy()

onCreate()
onStart()
onRestoreInstantState()
onResume()

活動不可見但未被破壞

onPause()
onStop()

從暫停狀態開始的活動:

onRestart()
onStart()
onResume()

活動不可見並被破壞:

onPause()
onStop()
onDestroy()

活動被銷毀並重新打開

onCreate()
onStart()

我認為您應該將它們存儲在共享的首選項中,以便在重新啟動應用程序或重新加載活動時不會丟失它們。

編輯:

首先,將此行添加到清單中(如果尚未完成):

android:configChanges="orientation"

添加此選項不會使您的活動在方向更改時重新啟動。 在這種情況下,您可以在活動的onCreate()方法開始時將FirstTimeActivityOpened設置為true,並可以在onDestroy()中將其設置為false。

現在,您已經知道方向何時更改。 因此,當它更改時,如果是第一次打開應用程序,則只需提示對話框即可。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM