2

AndroidのAlertDialogに問題があります。クラス「Misc」には、アラートダイアログを作成するメソッドがあります。

public static void getAlert (Context context)
{
Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Notruf absenden?");
builder.setMessage("automatischer Notruf in 60 sec.");
builder.setCancelable(true);
builder.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               callEmergency(context);
           }
       });
builder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
              countdown.cancel();
           }
       });

 final AlertDialog alertBox = builder.create();
 alertBox.show();

 countdown = new CountDownTimer(60000, 1000) 
 {
   public void onTick(long millisUntilFinished) 
   {
     alertBox.setMessage("automatischer Notruf in "+ (millisUntilFinished/1000) + " sec.");
   }
   public void onFinish()
   {
   alertBox.cancel();
   callEmergency(context);
   }
}.start();

メインアクティビティで次のように入力してメソッドを呼び出すと、次のようになります。

Misc.getAlert(this)

それは機能しますが、Algorithmという名前の別のクラスでは、同じように呼び出します。

Misc.getAlert(context)

しかし、この例外があります:

09-16 17:15:32.304: E/AndroidRuntime(19797): FATAL EXCEPTION: main
09-16 17:15:32.304: E/AndroidRuntime(19797): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
09-16 17:15:32.304: E/AndroidRuntime(19797):    at android.view.ViewRoot.setView(ViewRoot.java:536)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at android.app.Dialog.show(Dialog.java:241)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at de.smehner.Sturzerkennung.Misc.getAlert(Misc.java:220)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at de.smehner.Sturzerkennung.Algorithm.fall(Algorithm.java:203)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at de.smehner.Sturzerkennung.Algorithm.performNonGraphical(Algorithm.java:68)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at de.smehner.Sturzerkennung.SensorValueReceiver.onSensorChanged(SensorValueReceiver.java:66)
09-16 17:15:32.304: E/AndroidRuntime(19797):    at android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:538)

getAlertに設定してみました

Builder builder = new AlertDialog.Builder(Sturzerkennung.this); // Sturzerkenung is the main activity

しかし、エラーがあります:「Sturzerkennungタイプの囲んでいるインスタンスはスコープ内でアクセスできません」

context.getApplicationContext代わりにSturzerkennung.this問題も解決しませんでした。誰かがこの問題のアイデアを持っていますか?

4

1 に答える 1

1

問題は解決しました..Algorithmクラスのコンテキストは、ActivitySturzerkennungからのものではありませんでした...

Sturzerkennungに私は入れました

public static Context context;
...
context = this;

次に、アルゴリズムでは、getAlertのパラメーターは次のようになります。

Misc.getAlert(Sturzerkennung.context)

今それは動作します。

于 2012-09-18T13:52:39.610 に答える