2016-06-27 4 views
0

現在、私のコードはデバイスを回転させるときに解除する必要があるダイアログを作成します。このように、特定のダイアログのiはグローバル宣言した後、コードを持って次のようにonDestroyでonDestroy内から複数選択ダイアログを解除する方法

​​

のダイアログが表示されている場合、私は、確認することができ、その場合はそれを破壊:

if ((alertDialog !=null) && (alertDialog.isShowing())) 
{ 
    alertDialog.dismiss(); 
} 

上記の操作は、基本的なテキストとボタンベースのダイアログでは問題ありませんが、チェックボックスやラジオボタンなどの複数の選択項目を扱うダイアログもあります。

もののような現在の設定です:複数選択ダイアログで

AlertDialog.Builder dialogMultipleChoice = new AlertDialog.Builder(this); 

dialogMultipleChoice.setMultiChoiceItems(myList, myCheckedList, new DialogInterface.OnMultiChoiceClickListener(){ 
@Override 
public void onClick(DialogInterface dialog,int which, boolean isChecked) { 
    checkedList[which] = isChecked; 
    }} 
); 

...というように。..

、私はonDestroyでこれを却下することができますどのように見ることができない、つまり、私が持っていますdialogMultipleChoice.dismiss()を呼び出す能力がありません。

私はdialog.createを使用することはできません。私は、setMultiChoiceItemsを呼び出すことはできません。

これを解決するための助けがあれば幸いです。

あなたはビルダーを作成し、あなたのメンバ変数に builder.create();の値を代入しているあなたの最初の例では

答えて

0

Builder dialog = new AlertDialog.Builder(context); 
alertDialog = dialog.create(); 

しかし、第二の例では、あなただけのローカル変数作成されています

AlertDialog.Builder dialogMultipleChoice = new AlertDialog.Builder(this); 

このダイアログをメンバー変数に割り当てるには、alertDialog = dialog.create();に電話して、もう1つのダイアログのように閉じることができます。

+0

こんにちはKatharina、残念ながらそれは動作しません。なぜなら、私がdialog.createを使用すると、マルチチートアイテムを割り当てることができないからです。その方法ではサポートされていないので、これはうまくいきません。 – greysqrl

+0

ビルダーに項目を割り当てた後に 'dialog.create()'を呼び出す – Katharina

0

最後に、私はダイアログに.show()呼び出しの戻り値を割り当てました。つまり、dialog = dialogMultipleChoice.show();

関連する問題