1

コード

         this.getApplicationContext().getContentResolver().registerContentObserver(
              android.provider.Settings.System.CONTENT_URI, 
              true, new ContentObserver(new Handler()) {
                public void onChange(boolean selfChange) {
                  Toast.makeText(audioServices.this, "Working..", Toast.LENGTH_SHORT).show();
                  //dispVC();
                  dialog = new Dialog(audioServices.this);
                    dialog.setContentView(R.layout.vc);

                    // set the custom dialog components - text, image and button
                    Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
                    // if button is clicked, close the custom dialog
                    dialogButton.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            dialog.dismiss();
                        }
                    });
                      dialog.show();
                  //System.out.println("Works!");
                }
            });

これはlogcatです。ノート -01-09 17:54:43.137: E/AndroidRuntime(7210): at com.torcellite.popupvc.audioServices$1.onChange(audioServices.java:59)

59行目はdialog.show();

- -編集 - -

ということで、コードをこんな感じに変更。

Intent dialogIntent = new Intent(audioServices.this, vcDialog.class);
                    dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    audioServices.this.startActivity(dialogIntent);

アプリがまだクラッシュします。これはlogcatです。

4

3 に答える 3

2

サービスには UI 要素がないため、ダイアログ ボックスを表示できません。ダイアログは、アクティビティ コンテキストからのみ追加できます。必要に応じてダイアログ テーマを使用して UI を持つアクティビティを呼び出すか、Android アラートの優先オプションである通知を作成することをお勧めします。

編集

新しいコードに基づいて、あなたの意図は問題ありません。代わりに、アプリケーション タグのマニフェストに次を追加します。

<activity android:name=".vcDialog" />
于 2013-01-09T12:31:42.000 に答える
0

サービスのコンテキストの代わりにアクティビティコンテキストを使用します。また、ダイアログの代わりにDialogFragmentsを使用してください。

于 2013-01-09T12:34:11.000 に答える
-1
dialogIntent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
dialogIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

代わりにこれらの行を入れてください

dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

ラインして、このようなアクティビティを呼び出してみてください

this.getApplicationContext().startActivity(dialogIntent)
于 2013-01-09T12:31:25.707 に答える