2012-02-17 40 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