2017-06-20 15 views
2

時々、私のRadioGroupボタンは選択中にチェックされません。私はXamarin.Androidを使用しており、私はRadioGroupに約15 RadioButtonsを持っています。奇妙なのは、クリックされたRadioButtonにフォーカスが常に設定されていることですが、は時々と同じです。RadioButtonは[クリックしてチェック]として設定されていません。現在使用しているサンプルコードは次のとおりです。Xamarin.AndroidでRadioGroupボタンをクリックしてもラジオボタンがオンにならない

私が選択するたびに各RadioButtonを[チェックする]としてマークするにはどうすればよいですか? ありがとうございます。

+0

だからそれを行うための正しい方法は、すべてのRadioButtonためfocusChangeイベントを登録し、focusChangeイベントハンドラでチェックするラジオボタンを設定することです。これらのプロパティをハンドラ内に設定しないでください –

+0

選択した 'RadioButton'がフォーカスを取得し、同時にCheckedとして設定されるようにしたので、私はこのようにしました。この場合の改善について何をお勧めしますか? – mrisek

+0

ボタンをクリックすると、チェックされ、フォーカスが得られます。あなたのハンドラにある全てを削除してください –

答えて

3

フォーカスは常にクリックされたRadioButtonに設定されますが、同じRadioButtonがクリック後にCheckedとして設定されないことがあります。

あなたがラジオボタンをクリックしたときをGetFocusは常に最初に来るので、あなたが初めてRadioButtonをクリックすると、これCheckedChangeイベントがトリガやったことがなかったです。それはできるだけ早くあなたがそれをクリックしてチェックを設定する必要があります

public class MainActivity : Activity 
{ 
    RadioGroup radioGroup; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView (Resource.Layout.Main); 
     radioGroup = FindViewById<RadioGroup>(Resource.Id.mGroup); 

     //register focus change event for every sub radio button. 
     for (int i = 0; i < radioGroup.ChildCount; i++) 
     { 
      var child=radioGroup.GetChildAt(i); 
      if (child is RadioButton) 
      { 
       ((RadioButton)child).FocusChange += RadioButton_FocusChange; 
      } 
     } 
    } 


    private void RadioButton_FocusChange(object sender, Android.Views.View.FocusChangeEventArgs e) 
    { 
     //check if the radio button is the button that getting focus 
     if (e.HasFocus){ 
      ((RadioButton)sender).Checked = true; 
     } 
    } 
} 
+0

残念ながら、メソッドRadioButton_FocusChange()は 'RadioGroup'ボタンのクリックでは呼び出されません。 – mrisek

+0

あなたのプロジェクトを共有できますか?これは本当に複雑なことではなく、どこでも動作します。 @Elvisは、イベントをグループ化するのではなく、ボタンイベントに登録する必要があると言いました。 –

+0

@mrisekあなたは私の完全なデモプロジェクト[ここ](https://github.com/elvisxia/RadioButtonDemo)を見つけることができます。試してみてください。 –

関連する問題