2012-02-17 6 views
0

サービスがアクティブになっているときにメッセージボックスダイアログボックスが表示されないのはなぜですか?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

私が欲しいのは私にボタンを表示することです。サービスが停止しているので、サービスからインテントを作成し、そのアクティビティでonDestroy()メソッドがサービスを停止する別のアクティビティを呼び出す必要があると思いますか? – Samuel

+0

アクティビティはまったく必要ありません。このサービスにはメソッド** stopService(Intent)**があります。ちょうどそれを呼び出します。 http://developer.android.com/reference/android/content/Context.html#stopService%28android.content.Intent%29 – AedonEtLIRA

答えて

3

builder.create()に電話してAlertDialogを作成し、次にshow()を表示して表示する必要があります。

ただし、これがサービスの場合、直接ダイアログを表示することはできません。サービス内からダイアログを表示する方法については、この質問を見てください:Alert dialog from Android service

+0

show()を呼び出すことができます。作成が自動的に呼び出されます。 – AedonEtLIRA

+0

どこからどのように? – Samuel

+0

builder.show();いつ、どこでそれを表示したいのですか? – AedonEtLIRA

0

あなたはその後、show()への呼び出しによって示すことができるAlertDialogを作成するためにあなたのビルダーにcreate()を呼び出す必要があります。このトピックの詳細については、the dialogues guideを参照してください。

関連する問題