2014-09-28 151 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

相关问题