2014-09-28 81 views
1

我想爲我的應用程序添加啓動警報,但每次回到主屏幕時它都會一直顯示。我該如何操作?新手在這裏,並感謝有關。在Android上每次啓動應用程序只顯示一次警告

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); 
     alertDialog.setMessage("About:"); 
     String alert1 = "Message here " ; 
     String alert2 = "Message here " ; 
     String alert3 = "Message here " ; 
     alertDialog.setMessage(alert1 +"\n"+ alert2 +"\n"+ alert3); 
     AlertDialog alert = alertDialog.create(); 
     alert.show(); 
+0

此代碼在哪裏調用,onResume()? – Kai 2014-09-28 13:32:37

+0

設置一個布爾變量 – 2014-09-28 13:48:35

+0

這是寫波紋管 公共類Main_Screen延伸活動{ 公共無效的onCreate(捆綁savedInstanceState){ 這裏 – hhayf 2014-09-28 13:49:22

回答

2

創建一個布爾變量(初始設置爲true)來告訴你,如果它是第一次運行或不和它存儲在Preferences

private boolean isFirstRun = true; 
private SharedPreferences prefs; 

在create()中,從Preferences中讀取該值,以防萬一它存在。默認值是true。

prefs = PreferenceManager.getDefaultSharedPreferences(this); 
isFirstRun = prefs.getBoolean("isFirstRun", true); 

如果該變量值爲true,則只顯示Dialog。 一旦顯示Dialog,將該變量設置爲false並將其保存在Preferences中。

if(isFirstRun){ 
     AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); 
     alertDialog.setMessage("About:"); 
     String alert1 = "Message here " ; 
     String alert2 = "Message here " ; 
     String alert3 = "Message here " ; 
     alertDialog.setMessage(alert1 +"\n"+ alert2 +"\n"+ alert3); 
     AlertDialog alert = alertDialog.create(); 
     alert.show(); 
} 

isFirstRun = false; 

prefs.edit().putBoolean("isFirstRun", isFirstRun).commit(); 

你運行你的代碼的下一時間,變量將始終爲false,因此Dialog不會顯示。

編輯:

裏面onStop(),做到:

if(alert!=null && alert.isShowing()) 
    alert.dismiss(); 

這將關閉對話框。當您退出活動到另一個。一旦按下按鈕,Dialog將不會再顯示。

+0

感謝response.This一個作品,但它可以防止警報從一個新的應用程序launch.Also我跑由於錯誤,必須用「(getBaseContext())」替換「(context)」。 – hhayf 2014-09-28 14:11:26

+0

我的錯誤。我編輯了代碼,所以上下文是這個 – joao2fast4u 2014-09-28 14:19:12

+0

我想我誤解了你的問題。如果您希望它在每次應用啓動時都顯示,請忘記「偏好設置」部分。看到我編輯的答案。 – joao2fast4u 2014-09-28 14:23:38

相關問題