私はこのコードを使用しています:
public void Close() {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch(which) {
case DialogInterface.BUTTON_POSITIVE:
dialog.dismiss();
MainActivity.this.finish();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Thanks");
builder.setPositiveButton("Quit", dialogClickListener);
builder.setNegativeButton("Stay", dialogClickListener);
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
builder.show();
}
});
}
ユーザーが終了を選択すると、Close() が呼び出されます。アラートボックス「ビルダー」を開きます。ビルダーで「終了」を選択すると、次のエラーが発生します。
06-23 18:32:25.230: E/WindowManager(532): アクティビティ com.amateurprogs.championpkg.MainActivity が、最初にここに追加されたウィンドウ com.android.internal.policy.impl.PhoneWindow$DecorView@41768940 をリークしました 06-23 18:32:25.230: E/WindowManager(532): android.view.WindowLeaked: アクティビティ com.amateurprogs.championpkg.MainActivity がウィンドウ com.android.internal.policy.impl.PhoneWindow$DecorView@41768940 をリークしました。最初にここに追加されました 06-23 18:32:25.230: E/WindowManager(532): android.view.ViewRootImpl.(ViewRootImpl.java:344) で 06-23 18:32:25.230: E/WindowManager(532): android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267) で 06-23 18:32:25.230: E/WindowManager(532): android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215) で 06-23 18:32:25.230: E/WindowManager(532): android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140) で 06-23 18:32:25.230: E/WindowManager(532): android.view.Window$LocalWindowManager.addView(Window.java:537) で 06-23 18:32:25.230: E/WindowManager(532): android.app.Dialog.show(Dialog.java:278) で 06-23 18:32:25.230: E/WindowManager(532): android.app.AlertDialog$Builder.show(AlertDialog.java:932) で 06-23 18:32:25.230: E/WindowManager(532): com.amateurprogs.championpkg.MainActivity$2.run(MainActivity.java:42) で
MainActivity.java の 42 行目は builder.show() を参照しています。
「終了」ボタンを選択すると、dialog.dismiss() を実行してから、Activity.finish() を実行します。それでも窓から漏れます。
dialog.dismiss() でもこのエラーが発生するのはなぜですか。