4
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch(id) {
case DIALOG_ID:
LayoutInflater inflater = getLayoutInflater();
View InfoLayout = inflater.inflate(R.layout.info_dialog, null);
AlertDialog.Builder b = new AlertDialog.Builder(MyActivity.this)
.setView(InfoLayout);
initInfoDialog(dialog);
return dialog;
...
private void initInfoDialog(Dialog dialog) {
//this line has the null pointer
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
なぜdialog.getWindow()がnullを返すのですか?dialog.getWindow()はダイアログが作成された後にnullを返します
アクティビティが表示されていない場合はそれが表示されます。また、同じメソッド(initInfoDialog)をonPrepareDialogから呼び出すと、getWindow()は正しい値を返します。ソースを見ると、onPrepareDialogはdialog.show()より前に呼び出されているので、何を作るべきか分かりません。 – nagohs
'getWindow()'は 'null'を返しますか?私は今それをテストし、 'onCreate'で' showDialog(0) 'を呼んでも再現できません。あなたの 'initInfoDialog'を詳しく見てみると、' dialog'は 'null'にならないのでしょうか? – Knickedi
私は同じ目標を達成するために少しでもコードを変更してしまったので、私はもはやこの正確な流れを持っていません。 1つは、私はもはやBuilderクラスを使用していない、私はちょうどコンストラクタを介して自分自身をダイアログを作成しています。いずれにしても、私の現在のコードでは、onCreateDialogにブレークポイントを入れようとしましたが、dialog.getWindow()はnullではありませんでした。私はあなたに何を伝えるべきか分かりませんが、今は大丈夫ですが、先日、それを避けることができませんでした。今のところ私は進んでいますが、私が再びそれを実行すると、私はサンプルプロジェクトを作成し、この質問を再開します。助けてくれてありがとう! – nagohs