2012-02-17 76 views
0

爲什麼服務啓動時它沒有顯示messageboxdialog。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(); 
       } 
      }); 


} 

吐司出現聲音正在播放只有showdialog不來,爲什麼?

+0

您無法從服務創建對話框。參考這篇文章:http://stackoverflow.com/questions/5126868/showing-an-ok-dialog-box-from-a-service-receiver-in-android – AedonEtLIRA 2012-02-17 18:13:27

+0

我想要的是讓我看到一個按鈕,當服務正在運行停止它,所以你認爲從服務我必須創建意圖,並調用另一個活動,該活動調用onDestroy()方法將停止服務? – Samuel 2012-02-17 18:22:50

+0

你根本不需要這項活動。該服務有一個方法,** stopService(Intent)**。只是打電話。 http://developer.android.com/reference/android/content/Context.html#stopService%28android.content.Intent%29 – AedonEtLIRA 2012-02-17 18:26:01

回答

3

您需要撥打builder.create()來創建您的AlertDialog,然後在對話框上顯示show()以顯示它。

但是,如果這是一項服務,您將無法直接顯示對話框。看看這個問題,對於如何從服務中顯示一個對話框:Alert dialog from Android service

+0

您可以調用show()。創建將自動被調用。 – AedonEtLIRA 2012-02-17 18:14:41

+0

如何以及從哪裏? – Samuel 2012-02-17 18:34:22

+0

builder.show();以及您想要展示它的時間和地點。 – AedonEtLIRA 2012-02-17 18:40:13

0

你要叫create()您Builder創建一個AlertDialog然後可以通過向show()呼叫顯示。有關該主題的更多信息,請參見the dialogues guide