ProgressDialogを表示するアクティビティがあります。私は自分のアクティビティでonCreateDialogをオーバーライドします。ProgressDialogを表示中にAndroidがエラーを取得しています
protected Dialog onCreateDialog(int id){
switch (id) {
case DOWNLOAD_DIALOG:
ProgressDialog dialog = new ProgressDialog(ListMapActivity.this);
dialog.setTitle(getResources().getString(R.string.dialog_download_title));
dialog.setCancelable(true);
dialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if ((mTask.getStatus().equals(AsyncTask.Status.RUNNING)
|| mTask.getStatus().equals(AsyncTask.Status.PENDING))
&& !mTask.isCancelled()){
mTask.cancel(true);
}
Toast.makeText(getApplicationContext(), R.string.dialog_download_cancel, Toast.LENGTH_LONG).show();
}
});
TextView tw = new TextView(ListMapActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
tw.setLayoutParams(params);
tw.setText(getResources().getString(R.string.dialog_download_text));
dialog.setContentView(tw);
return dialog;
default:
return null;
}
}
注:
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): android.util.AndroidRuntimeException: requestFeature() must be called before adding content
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:181)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at com.android.internal.app.AlertController.installContent(AlertController.java:199)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at android.app.AlertDialog.onCreate(AlertDialog.java:251)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at android.app.ProgressDialog.onCreate(ProgressDialog.java:176)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at android.app.Activity.createDialog(Activity.java:886)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at android.app.Activity.showDialog(Activity.java:2557)
07-13 13:10:11.449: ERROR/AndroidRuntime(8720): at android.app.Activity.showDialog(Activity.java:2524)
onCreateDialog(int型のID)は次のようになります。毎回onCreateDialog中のダイアログに戻り、私は言って、力クローズを取得し、私はProgressDialog.Show(コンテキスト、タイトルを試してみました、メッセージ)を直接実行して、結果を表示します。
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.view.ViewRoot.setView(ViewRoot.java:531)
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.app.Dialog.show(Dialog.java:241)
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.app.ProgressDialog.show(ProgressDialog.java:107)
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.app.ProgressDialog.show(ProgressDialog.java:90)
07-13 13:03:42.910: ERROR/AndroidRuntime(8444): at android.app.ProgressDialog.show(ProgressDialog.java:85)
私は何かを忘れてしまいます。私はこのrequestFeature()が呼び出された場所がわからない。すべてのアイデアは大歓迎です
UPDATE:
LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
tw.setLayoutParams(params);
tw.setText(getResources().getString(R.string.dialog_download_text));
dialog.setContentView(tw);
だから私はコンテンツの設定方法に迷ってしまいました:私は少し周りを演奏し、私はこれらの行を削除した場合、すべてが、再び動作すること、が分かった このビューのメンバーとしての自分のアクティビティのonCreateでメインデザインを作成し、これをProgressDialogに配置すると、助けになりません。私は単に問題を起こさない。私のダイアログのコンテンツとしてTextViewをオンザフライで配置するのは間違っていますか?
どこでshowDialog()を呼び出しますか?コードには表示されていません。 – Fortega
実際に私はアクティビティのネストされたクラスとして定義されたAsyncTaskからonPreExecute()でそれを開始しようとしています。しかし、私はあなたのアクティビティのonCreate()またはListViewのonItemClick()で呼び出すと同じエラーが発生します –
アクティブまたはアクティブ(アクティブ)アクティビティのユーザコンテキストでダイアログを作成する必要があります。 – Arslan