2016-08-17 8 views
0

2つのラジオボタンのラジオグループがあります。最初のラジオボタンを選択すると、ラジオグループの下にテキストが表示されます。ユーザーが2番目のラジオボタンを選択すると、同じエリアに異なるメッセージが表示されます。トーストでこれを行うのは本当に簡単ですが、私はトーストメッセージでそれをしたくありません。ラジオボタンをクリックしたときにテキストを表示する方法は?

public void onActivityCreated (Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 


    Button rb1 = (Button) getActivity().findViewById(R.id.radioButton1); 
    Button rb2 = (Button) getActivity().findViewById(R.id.radioButton2); 

    rb1.setOnClickListener(next_Listener); 
    rb2.setOnClickListener(next_Listener); 

} 

private OnClickListener next_Listener = new OnClickListener() { 

    public void onClick(View v) { 

     RadioGroup radio_grp=(RadioGroup)getActivity().findViewById(R.id.radio_grp); 
     RadioButton rb1=(RadioButton)getActivity().findViewById(R.id.radioButton1); 
     RadioButton rb2=(RadioButton)getActivity().findViewById(R.id.radioButton1); 
     if(rb1.isChecked() == true) { 

      // display text if they click 1st button 

     } 

     if (rb2.isChecked()) == true { 

      // display text if they click 2nd button 

     } 
    } 
} 

答えて

1

のようにそれを使用してください。

onCheckedChangedListener()を実装することもできますが、デフォルトでは値が設定されていない必要があります。

これは、onCheckedChangedListener()がボタン間で変更したときにのみトリガし、既に選択されている場合はそのボタンに対してトリガを持たないためです。

TextViewが定義されているとします。 RADIOGROUPそれぞれのRadioButtonは、フラグメントレイアウト内にある場合、あなたはgetView().findViewById()代わりのgetActivity().findViewById()

変更コードを使用して自分の意見を見つける必要があります

public void onActivityCreated (Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    TextView yourTextView = (TextView) findViewById(R.id.your_text_view); 

    RadioGroup radio_grp= (RadioGroup) getView().findViewById(R.id.radio_grp); 
    RadioButton rb1 = (RadioButton) getView().findViewById(R.id.radioButton1); 
    RadioButton rb2 = (RadioButton) getView().findViewById(R.id.radioButton1); 

    View.OnClickListener button1Listener = new View.OnClickListener() { 
     public void onClick(View v) { 
      yourTextView.setText("you have touched button1"); 
     } 
    }; 

    View.OnClickListener button2Listener = new View.OnClickListener() { 
     public void onClick(View v) { 
      yourTextView.setText("you have touched button2"); 
     } 
    }; 
    rb1.setOnClickListener(button1Listener); 
    rb2.setOnClickListener(button2Listener); 
} 

@EDIT

:あなたは次のようにそれを行うことができますこれまで:

RadioGroup radio_grp= (RadioGroup) getView().findViewById(R.id.radio_grp); 
RadioButton rb1 = (RadioButton) getView().findViewById(R.id.radioButton1); 
RadioButton rb2 = (RadioButton) getView().findViewById(R.id.radioButton2); 
+0

私は 'rb1.setOnClickListener(button1Listener);でjava.lang.NullPointerExceptionを取得し続けます。 rb2.setOnClickListener(button2Listener); ' –

+0

エラー/ Stacktraceを表示できますか? ここでNullPointerExceptionが発生している場合は、rb1.setOnClickListener(button1Listener);これは、rb1がnullの可能性が最も高いことを意味します。つまり、 RadioButton rb1 =(RadioButton)getActivity()。findViewById(R.id.radioButton1); radioButton1はレイアウト内のボタンのIDですか? –

+0

あなたのコードを修正するのを忘れてしまった細かいディテールがありました。編集を確認します。 RadioGroupと各RadioButtonはFragmentレイアウト内にありますか? –

0

あなたはラジオボタンのOnCheckedChangeListenerを定義する必要があり、この

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      if(checkedId == R.id.radioButton) 
      { 
       textField.setText("first text"); 

      } 
      else 
      if (checkedId == R.id.radioButton2) { 

        textField.setText("second text"); 
      } 
     } 
    }); 
1

を試してみてください。 のRadioButtonは、あなたがClickListenerを実装することができ、Buttonクラスを拡張しているので、この

rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if(isChecked()) 
        textview.setText("Radio Button 1 is checked"); 
      } 
     }); 



rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        if(isChecked()) 
         textview.setText("Radio Button 2 is checked"); 
       } 
      }); 
関連する問題