我遇到了一个问题,无线电检查更改监听器没有在android片段中工作,我在一个活动中尝试了它会正常工作,而我转换成片段它会给出无响应,请帮助我,这是我的代码。
K06_Away.java
public class K06_Away extends Fragment {
private View kf06_view;
protected Typeface tfLatoBold,tfLatoMedium,tfLatoRegular;
private Button button_kf06_back,button_kf06_next;
private TextView txtVw_kf06_resident_away;
private EditText edTxt_kf06_visiting_lastname;
private RadioGroup radioGp_kf06_resident_away;
List<RadioButton> radioButtons = new ArrayList<RadioButton>();
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
kf06_view = inflater.inflate(R.layout.k06_away, container, false);
return kf06_view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
configViews();
}
private void configViews() {
button_kf06_back = (Button) kf06_view.findViewById(R.id.button_kf06_back);
button_kf06_next = (Button) kf06_view.findViewById(R.id.button_kf06_next);
txtVw_kf06_resident_away= (TextView) kf06_view.findViewById(R.id.txtVw_kf06_resident_away);
radioGp_kf06_resident_away = (RadioGroup) kf06_view.findViewById(R.id.radioGp_kf06_resident_away);
radioButtons.add( (RadioButton)kf06_view.findViewById(R.id.radio_kf06_1_2_hours) );
radioButtons.add( (RadioButton)kf06_view.findViewById(R.id.radio_kf06_halfday) );
radioButtons.add( (RadioButton)kf06_view.findViewById(R.id.radio_kf06_allday) );
radioButtons.add( (RadioButton)kf06_view.findViewById(R.id.radio_kf06_moreday) );
configClickListeners();
radioButtonAction();
}
private void configClickListeners() {
button_kf06_back.setOnClickListener(this);
button_kf06_next.setOnClickListener(this);
}
private void radioButtonAction(){
for (RadioButton button : radioButtons){
button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) processRadioButtonClick(buttonView);
String radio_Text = buttonView.getText().toString();
int radio_Id = buttonView.getId();
System.out.println("Selected the Radio:"+radio_Text+", Radio-Id:"+radio_Id);
}
});
}
}
private void processRadioButtonClick(CompoundButton buttonView){
for (RadioButton button : radioButtons){
if (button != buttonView ) button.setChecked(false);
}
}
}
k06_away.xml
<RadioGroup
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/lLayout_kf06_resident_away"
android:id="@+id/radioGp_kf06_resident_away">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:baselineAligned="false"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:layout_marginLeft="150dp"
tools:ignore="RtlHardcoded">
<RadioButton
android:id="@+id/radio_kf06_1_2_hours"
style="@style/radionbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_resident_away_hour_1"
android:layout_gravity="left"
android:checked="false"
android:textSize="25sp"
android:paddingStart="20dp"
android:layout_marginTop="150dp"
android:textColor="@color/colorWhite"
tools:ignore="NestedWeights,RtlSymmetry" />
<RadioButton
android:id="@+id/radio_kf06_halfday"
style="@style/radionbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_resident_away_hour_2"
android:layout_gravity="left"
android:checked="false"
android:textSize="25sp"
android:textColor="@color/colorWhite"
android:paddingStart="20dp"
android:layout_marginTop="50dp"
tools:ignore="NestedWeights,RtlSymmetry"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:layout_marginLeft="50dp"
tools:ignore="RtlHardcoded">
<RadioButton
android:id="@+id/radio_kf06_allday"
style="@style/radionbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_resident_away_hour_3"
android:layout_gravity="left"
android:checked="false"
android:textSize="25sp"
android:textColor="@color/colorWhite"
android:paddingStart="20dp"
android:layout_marginTop="150dp"
tools:ignore="NestedWeights,RtlSymmetry"/>
<RadioButton
android:id="@+id/radio_kf06_moreday"
style="@style/radionbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_resident_away_hour_4"
android:layout_gravity="left"
android:checked="false"
android:textSize="25sp"
android:textColor="@color/colorWhite"
android:paddingStart="20dp"
android:layout_marginTop="50dp"
tools:ignore="NestedWeights,RtlSymmetry,RtlHardcoded"/>
</LinearLayout>
</LinearLayout>
</RadioGroup>
答案 0 :(得分:1)
RadioGroup直接只包含RadioButtons,没有其他布局,如果你在RadioGroup中添加LinearLayout,它就无法工作。直接在Radiogroup中添加Radiobuttons而不使用LinearLayout它们将起作用。
答案 1 :(得分:1)
1。尝试从configViews()
调用方法onCreateView()
,并将视图kf06_view
作为参数传递。
2。实施View.OnClickListener
来处理button_kf06_back
和button_kf06_next
点击事件。
更新您的K06_Away
片段,如下所示:
public class K06_Away extends Fragment implements View.OnClickListener {
protected Typeface tfLatoBold,tfLatoMedium,tfLatoRegular;
private Button button_kf06_back,button_kf06_next;
private TextView txtVw_kf06_resident_away;
private EditText edTxt_kf06_visiting_lastname;
private RadioGroup radioGp_kf06_resident_away;
List<RadioButton> radioButtons = new ArrayList<RadioButton>();
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View kf06_view = inflater.inflate(R.layout.k06_away, container, false);
// Init
configViews(kf06_view);
return kf06_view;
}
private void configViews(View view) {
button_kf06_back = (Button) view.findViewById(R.id.button_kf06_back);
button_kf06_next = (Button) view.findViewById(R.id.button_kf06_next);
txtVw_kf06_resident_away= (TextView) view.findViewById(R.id.txtVw_kf06_resident_away);
radioGp_kf06_resident_away = (RadioGroup) view.findViewById(R.id.radioGp_kf06_resident_away);
radioButtons.add( (RadioButton) view.findViewById(R.id.radio_kf06_1_2_hours) );
radioButtons.add( (RadioButton) view.findViewById(R.id.radio_kf06_halfday) );
radioButtons.add( (RadioButton) view.findViewById(R.id.radio_kf06_allday) );
radioButtons.add( (RadioButton) view.findViewById(R.id.radio_kf06_moreday) );
configClickListeners();
radioButtonAction();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_kf06_back:
// Do something...
break;
case R.id.button_kf06_next:
// Do something...
break;
}
}
private void configClickListeners() {
button_kf06_back.setOnClickListener(this);
button_kf06_next.setOnClickListener(this);
}
private void radioButtonAction(){
for (RadioButton button : radioButtons){
button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) processRadioButtonClick(buttonView);
String radio_Text = buttonView.getText().toString();
int radio_Id = buttonView.getId();
System.out.println("Selected the Radio:"+radio_Text+", Radio-Id:"+radio_Id);
}
});
}
}
private void processRadioButtonClick(CompoundButton buttonView){
for (RadioButton button : radioButtons){
if (button != buttonView ) button.setChecked(false);
}
}
}