2012-06-05 3 views
0

У меня есть программа отвечает за шоу AlertDialog, когда он на переднем плане через несколько секунд:Как показать AlertDialog, когда приложение в Foreground Android?

ActivityManager am = (ActivityManager) getSystemServ(); 
    if (am != null) { 
     List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
     if (taskInfo != null && !taskInfo.isEmpty()) { 
      if (taskInfo.get(0) != null && taskInfo.get(0).topActivity != null) { 
       if (!MY_CLASS_NAME.equalsIgnoreCase(taskInfo.get(0).topActivity.getClassName())) { 

        new AlertDialog.Builder(this).setMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAA?") 
        .setTitle("Message").setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) {         

         } 
        }) 
        .setNegativeButton("No", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which){ 

         } 
        }).show();      
       } 
      } 
     }      
    }  

Но AlertDialog не показывает, когда приложение идти на передний план! Помогите мне! Благодаря!

+0

вы уверены, что ваши условия id-else правильно ведут к AlertDialog? можете ли вы зарегистрировать какое-либо сообщение, чтобы убедиться, что условия работают нормально? – waqaslam

+0

Где у вас этот код? В деятельности или услуге? – alexanderblom

+0

@alexanderblom В службе: я хава TimerTask Timer.scheduleAtFixedRate (новый TimerTask() { showAlertDialog();} – user1184715

ответ

0

Вы не можете показать диалог из службы. Вместо того, чтобы использовать активность тематические как Диалог, установить тему для деятельности (в манифесте), как это:

android:theme="@android:style/Theme.Dialog" 

Кроме того, вы не должны использовать TimerTask, использовать Handler вместо этого, как это: http://developer.android.com/resources/articles/timed-ui-updates.html

+0

. Ваше среднее - создать новую активность с помощью темы «Диалог»! И назовите это, когда приложение на переднем плане? – user1184715

+0

Да, это будет вести себя так, как вы хотите. Вам нужно сделать это так, потому что вы не можете запустить диалог из фона. – alexanderblom

+0

Спасибо за помощь! Я не могу голосовать за то, что у меня недостаточно репутации! :) И у нас такой же возраст! :) – user1184715

0

Используйте метод создания(), чтобы создать диалоговое окно, как это:

new AlertDialog.Builder(this).setMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAA?") 
         .setTitle("Message").setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) {         

         } 
        }) 
        .setNegativeButton("No", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which){ 

         } 
        }).create().show(); 
+0

, если вы просто хотите показать AlertDialog без указания ссылки на объект ** AlertDialog **, вам действительно не нужно вызывать 'create()' перед 'show()'. Вы можете напрямую вызвать 'show()' для поп-диалога – waqaslam

+0

, это не сработало для меня! Но спасибо u много – user1184715

0

Я только изменил свой код. Пожалуйста, проверьте и обновите в своем фрагменте кода:

ActivityManager am = (ActivityManager) getSystemServ(); 
if (am != null) { 
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
    if (taskInfo != null && !taskInfo.isEmpty()) { 
     if (taskInfo.get(0) != null && taskInfo.get(0).topActivity != null) { 
      if (!MY_CLASS_NAME.equalsIgnoreCase(taskInfo.get(0).topActivity.getClassName())) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAA?") 
       .setTitle("Message").setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) {         

        } 
       }) 
       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which){ 

        } 
       });    
    AlertDialog alert = builder.create(); 
    alert.show();  
      } 
     } 
    }      
} 
+0

Спасибо! Я пробую это, но это не сработало! :) – user1184715

+0

Получаете ли вы какую-либо ошибку или еще не отображаете AlertDialog? –

+0

без ошибок! просто еще не отображает AlertDialog! Если приложение в фоновом режиме это нормально, но на переднем плане это не – user1184715

Смежные вопросы