2012-02-17 5 views
0

Почему он не показывает мне сообщениеboxdialog, когда Служба активирована.Классы обслуживания Android

@Override 
public void onStart(Intent intent, int startid) { 
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onStart"); 
    player.start(); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Are you sure you want to exit?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        AlarmService.this.onDestroy(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 


} 

Тост появляется, когда воспроизводится звук, только шоудиалог не начинается, почему?

+0

Вы не можете создавать диалоговые окна из Сервиса. Обратитесь к этому сообщению: http://stackoverflow.com/questions/5126868/showing-an-ok-dialog-box-from-a-service-receiver-in-android – AedonEtLIRA

+0

Что я хочу, это показать мне кнопку, когда служба работает, чтобы остановить его. Как вы думаете, из Сервиса я должен создать Intent и вызвать другое действие, которое этот метод вызывает метод onDestroy(), остановит службу? – Samuel

+0

Вам вообще не нужна эта деятельность. Услуга имеет метод ** stopService (Intent) **. Просто позвоните. http://developer.android.com/reference/android/content/Context.html#stopService%28android.content.Intent%29 – AedonEtLIRA

ответ

3

Чтобы создать AlertDialog, необходимо позвонить builder.create(), затем show() в диалоговом окне для его отображения.

Однако, если это Услуга, вы не сможете отобразить диалоговое окно напрямую. Посмотрите на этот вопрос для того, как показать диалог изнутри службы: Alert dialog from Android service

+0

Вы можете просто вызвать show(). Тогда автоматически будет вызываться Create. – AedonEtLIRA

+0

как и откуда? – Samuel

+0

builder.show(); и когда и где вы хотите его показать. – AedonEtLIRA

0

Вы должны вызвать create() на вашем Builder создать AlertDialog, которые затем могут быть показаны с помощью вызова show(). См. the dialogues guide для получения дополнительной информации по этой теме.

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