2015-06-12 61 views
0

有沒有辦法在應用程序打開時才顯示提醒?我在MainActivity中的onStart()中創建了一個警報,並且每當我回到應用程序中的該活動時,它都會再次顯示警報,這可能會讓用戶惱火。或者有沒有辦法創建一個「有它」按鈕,然後關閉警報?以下是我的代碼:僅在打開應用程序時纔會顯示提醒

protected void onStart() { 
    super.onStart(); 
    new AlertDialog.Builder(this) 
      .setTitle("Instructions") 
      .setMessage("Hello! To begin, select a map from the list to train with. Make sure" + 
        " you are on the correct floor.") 
      .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       } 
      }) 
      .setIcon(R.drawable.ic_launcher) 
      .show(); 

} 

回答

1

這是因爲當另一個活動來到您的MainActivity前景使得您的活動去OnPause()。 然後當你回到你的MainActivity。系統再次調用 onStart()See The activity life cycle

- 首先解決

public class TestActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (savedInstanceState == null) { 
     showAlertDialog(); 
    } 
} 

private void showAlertDialog() { 
    // code to show alert dialog. 
} 

}

- 第二方案

public class TestActivity extends ActionBarActivity { 

private static boolean isAlertDialogShownBefore = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (!isAlertDialogShownBefore) { 
     showAlertDialog(); 
     isAlertDialogShownBefore = true; 
    } 
} 

private void showAlertDialog() { 
    // code to show alert dialog. 
} 

@Override 
public void onBackPressed() { 
    isAlertDialogShownBefore = false; 
    super.onBackPressed(); 
} 

}

+0

當我做這個警報的每個應用程序打開時不顯示但僅在安裝應用程序後第一次。 – coder4lyf

+0

如果你已經使用了第一個解決方案,你必須在MainActivity的onDestroy()中將isShown變量放入false。 或者你可以使用第二個解決方案if(savedInstanceState == null){showResultDialog(); } –

+0

謝謝,但它仍然沒有做我想做的事情。當我從暫停狀態重新打開應用程序時,它不顯示 – coder4lyf

0

將該代碼放入您活動的onCreate方法中。檢查saveInstanceState爲空,如果它顯示您的alertDialog

相關問題