2011-11-16 10 views
0

これは実際の問題よりもUXの問題ですが、修正できればうれしいです。AlertDialogのラジオボタンは変更されません。

私はそれが作成するために使用するコードは、そう... ... ...

private void createGuideViewChooserDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Select Guide View"); 
    builder.setSingleChoiceItems(guideViewChooserDialogItems, currentGuideView, this); 
    guideViewChooserDialog = builder.create(); 
    guideViewChooserDialog.show(); 
} 

enter image description here

を画像に似た単一選択AlertDialogを作成しています基本的には、currentGuideViewというintを使用して、選択されているラジオボタンを設定し、ActivityDialogInterface.OnClickListenerを実装するため、thisを呼び出して使用しますsetSingleChoiceItems(...)

リスナーは、選択したアイテムに基づいていくつかの簡単なことを行い、次にguideViewChooserDialog.cancel()を呼び出します。

リスト項目のいずれかをタッチすると項目が短く強調表示され、選択されたラジオボタンの変更を表示せずにAlertDialogが消えます。

すべてはうまく動作し、私のonClick(...)リスナーはどの項目がタッチされたかを取得しますが、ラジオボタンの選択の変更が表示されずにダイアログが消えてしまうのはちょっとわかりません。

私はこれをHTC Desire with Android v2.2でテストしています。これは計画された動作か、v2.2かHTC実装のいずれかのバグですか?ダイアログボックスが消える前に、選択した項目のラジオボタンが正しく選択された状態で表示されるようにすることはできますか?

+0

完全なコードを貼り付けてください。それらの変数が何を参照しているかを推測しなければならないときは、それを理解するのは難しいです... – LuxuryMode

+0

どの変数を推測する必要はありませんか? 'guideViewChooserDialogItems'はテキストの' CharSequence [] 'です。質問で言及したように、' currentGuideView'は 'AlertDialog'が最初にあるときに選択するラジオボタンを設定する' int'(0-2の間)です。表示されます。要点は機能しますが、アイテムに触れると、 'AlertDialog'は自動的にラジオボタンの選択を切り替えません。私は手動で手動で切り替えなければならないか(これを行う方法は見つけられません)、またはAlertDialogが自動的にそれを行うべきかどうかを知る必要があります。 – Squonk

答えて

0

DialogInterface.CnClickListenerで設定する必要があるため、ダイアログがすぐに消えてしまいます。それを嫌うのでなければ、ユーザが "ok"をクリックしてラジオの選択を確認してからダイアログを閉じるボタンを追加してください。

+0

私はそれをやりたかったのではありませんが、これは問題をスムーズにするのに最も近い方法です。私はOK/Cancelボタンを追加しました。そして今はUXの観点からより良い動作をしています。ありがとう。 – Squonk

関連する問題