2011-10-07 19 views
3

"Apply"ボタンと "Cancel"ボタンでAlertDialogを選択しました。ユーザーが「キャンセル」を押すと、選択した項目を、ダイアログが最初に表示されたときの状態に戻します(既に値が保存されています)。Android:選択肢を一度に選択する方法AlertDialog?

ダイアログが最初にsetSingleChoiceItems()に作成されたときに選択した項目を設定する方法は知っていますが、後で設定する方法はありますか?

私はAPIレベル7と互換性がありたいので、むしろonPrepareDialog()を使用しないでください。

答えて

0

showDialogとonCreateDialogを経由するのではなく、その場でダイアログを作成することができます。この方法では、常に現在の選択をsetSingleChoiceItemsに与えます。

 
//where we display the dialog 

            
 
  
             showDialog(MYDIALOG);
            
  
AlertDialog.Builder builder = new Builder(this); 
String[] choices = {"A","B","C"}; 
builder.setSingleChoiceItems(choices,current_choice,null); 
builder.setPositiveButton("Select",null); 
builder.setNegativeButton("Cancel",null); 
builder.show(); 
... 
protected Dialog onCreatDialog(int id) { 

            
 
  
             if (id==MYDIALOG) { 
     AlertDialog.Builder builder = new Builder(this); 
     String[] choices = {"A","B","C"}; 
     builder.setSingleChoiceItems(choices,current_choice,null); 
     builder.setPositiveButton("Select",null); 
     builder.setNegativeButton("Cancel",null); 
     return builder.show(); 
    }
            
  
    return null; 
}

0

Altertダイアログで単一選択を作成するには、単一選択リストビューまたはラジオグループを使用しましたか? あなたがSingle Choice Listviweを使用した場合、心配する必要はありません。 ラジオ・グループを使用していた場合は、選択したラジオ・ボタンをアクティビティ内でGlobal Varialbeを使用して追跡する必要があります。

+0

私は 'AlertDialog.Builder.setSingleChoiceItems()'ので、私は単一選択リストビューを推測を使用。しかし、キャンセルを押してダイアログに戻った場合、キャンセルされた選択肢が表示され、これは自分のアプリの現在の状態と一致しません。 – Pooks

0

ユーザーがキャンセルをクリックしたときにしたいこと。 ユーザーがキャンセルをクリックしたときよりも、選択したアイテムをリストから削除したい場合は、次の操作を行う必要があります。あなたのlistitemseletedリスナーで

alb.setSingleChoiceItems(items, 0, new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      /* which argument is the position of the item in 
       array items you have to remove this item from items array 
       Make your items array global variable.since in java array are 
       immutable you have to use arraylist.Arraylist can be converted 
       to array.*/ 

     } 
    }); 

はどんな質問が気軽にあれば、これが役立つことを願っています。

+0

返事をありがとうが、私はリストから項目を削除したくない。単一選択項目リストには、各要素の右側にボタンがあります。そのボタンは現在選択されている要素に対して有効です。私がしたいのは、現在選択されている要素を、ユーザーがダイアログを開いたときの状態に戻すことです。 – Pooks

0

誰も私の問題の解決策を見つけることができなかったので、ボタンを使用しないダイアログを解決しました。ユーザーがリスト内の項目を押すと、その選択が適用され、ダイアログは閉じられます。以前の選択を覚えたり、キャンセルをサポートする必要はありません。

関連する問題