RadioGroup不工作在片段android
我遇到了一个问题无线电检查更改侦听器不工作在android片段,我试图在一个活动内它会正常工作,而我转换成片段它将不给予回应,请帮助我,这是我的代码。RadioGroup不工作在片段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>
1.尝试从onCreateView()
调用方法configViews()
并传递视图kf06_view
作为参数。
2.实施View.OnClickListener
处理button_kf06_back
和button_kf06_next
click事件。
更新您的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);
}
}
}
嘿FAT,我为我的问题得到了一个解决方案,实际的原因是我的背景屏幕颜色和重音颜色相同,所以视图无法显示选择。谢谢你的努力,对不起,大脑褪色。 –
非常欢迎亲爱的。快乐编码:) – FAT
RadioGroup中直接包含仅单选按钮,没有其他的布局,如果添加的LinearLayout里面RadioGroup中,它不是work.Directly使用outLineLayout在Radiogroup中添加Radiobuttons,它们将工作。
我对平板电脑10寸平板电脑屏幕的设计要求。除了这个设计之外,还有其他的可能性。 –
你必须添加每个RadioButton clicklistner,然后使用这个clicklistner你已经设置了其他RadioButton取消选中并单击RadioButton cheked。 –
调用'onCreateView你'configViews()'方法()' – tahsinRupam