gpt4 book ai didi

java - 使用 onCheckedChangeListener 清除多个单选组上的选定项目

转载 作者:行者123 更新时间:2023-12-02 10:15:23 28 4
gpt4 key购买 nike

我目前正在研究我的大学项目。在应用程序中,我有一个带有 fragment 的 Activity 。该 fragment 包含一个布局,其中嵌套了线性布局,其中有多个自定义单选按钮。我无法放置一个单选按钮组来启用按钮的单一选择,因为线性布局使其无法按预期工作。

所以我所做的是为 5 个部分创建了一个单选按钮组,并且为了能够从所有按钮中仅选择一项,我尝试使用clearCheck() 以编程方式清除其他单选按钮组上的选择。

fragment_parking_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ParkingLayoutFragment"
android:orientation="vertical">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">

<LinearLayout
android:layout_width="275dp"
android:layout_height="100dp"
android:background="@color/colorPrimary"
android:gravity="center">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="FACILITY"
android:textColor="#fff"/>

</LinearLayout>

<TextView
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Entrance/Exit"
android:textSize="12dp"
android:textColor="#31a81c"
android:textAlignment="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginEnd="50dp"
android:orientation="horizontal">

<RadioGroup
android:id="@+id/radio_group_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp"
android:background="@color/colorPrimary">

<RadioButton
android:id="@+id/rbtn_slot_1"
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"
android:layout_marginTop="5dp"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>


<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<LinearLayout
android:layout_width="60dp"
android:layout_height="40dp"
android:gravity="center_horizontal"
android:layout_marginStart="50dp"
android:background="@color/colorPrimary">
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="40dp"
android:orientation="vertical"
android:gravity="bottom">

<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_stairs"
android:layout_margin="5dp"
/>

<LinearLayout
android:layout_width="40dp"
android:layout_height="5dp"
android:gravity="bottom"
android:background="@color/colorPrimary"/>
</LinearLayout>


</LinearLayout>


<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginStart="40dp"
android:layout_marginTop="30dp"
android:padding="5dp"
android:background="@color/colorPrimary">

<RadioGroup
android:id="@+id/radio_group_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginEnd="8dp">

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>
<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>
</RadioGroup>
<RadioGroup
android:id="@+id/radio_group_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>
<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>
</RadioGroup>

</LinearLayout>

</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<RadioGroup
android:id="@+id/radio_group_5"
android:layout_width="75dp"
android:layout_height="80dp"
android:gravity="end"
android:orientation="horizontal">

<RadioButton
android:layout_width="15dp"
android:layout_height="40dp"
android:background="@drawable/custom_radio_pwd"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="15dp"
android:layout_height="40dp"
android:background="@drawable/custom_radio_pwd"
android:button="@android:color/transparent"/>
<LinearLayout
android:layout_width="15dp"
android:layout_height="80dp"
android:background="@color/colorPrimary"/>
</RadioGroup>
<RadioGroup
android:id="@+id/radio_group_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_gravity="end"
android:orientation="vertical"
android:background="@color/colorPrimary"
android:gravity="center"
android:padding="5dp">

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>
<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:layout_marginTop="3dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>

<RadioButton
android:layout_width="40dp"
android:layout_height="13dp"
android:background="@drawable/custom_radio"
android:button="@android:color/transparent"/>
</RadioGroup>
</LinearLayout>
</LinearLayout>

这是 fragment 中的部分代码

public class ParkingLayoutFragment extends Fragment {

RadioGroup radio_group_1, radio_group_2;
public ParkingLayoutFragment() {
// Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_parking_layout, container, false);

radio_group_1 = view.findViewById(R.id.radio_group_1);
radio_group_2 = view.findViewById(R.id.radio_group_2);

radio_group_1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
radio_group_2.clearCheck();

}
});
radio_group_2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
radio_group_1.clearCheck();
}
});

// Inflate the layout for this fragment
return view;
}
}

正如您所看到的,我已经为第二个单选组设置了一个 onCheckedChangeListener,因此当我在第一个单选组中选择一个项目时,第二个单选组将被清除,反之亦然。但是,当我运行应用程序并尝试选择一个项目时,应用程序只是卡住并重新启动到主要 Activity 。

这是 logcat 中的错误的一部分,看起来像一个循环

at com.grawlix.parkingally.ParkingLayoutFragment$1.onCheckedChanged(ParkingLayoutFragment.java:39)
at android.widget.RadioGroup.setCheckedId(RadioGroup.java:173)
at android.widget.RadioGroup.check(RadioGroup.java:167)
at android.widget.RadioGroup.clearCheck(RadioGroup.java:209)
at com.grawlix.parkingally.ParkingLayoutFragment$2.onCheckedChanged(ParkingLayoutFragment.java:46)
at android.widget.RadioGroup.setCheckedId(RadioGroup.java:173)
at android.widget.RadioGroup.check(RadioGroup.java:167)
at android.widget.RadioGroup.clearCheck(RadioGroup.java:209)
at com.grawlix.parkingally.ParkingLayoutFragment$1.onCheckedChanged(ParkingLayoutFragment.java:39)
at android.widget.RadioGroup.setCheckedId(RadioGroup.java:173)
at android.widget.RadioGroup.check(RadioGroup.java:167)
at android.widget.RadioGroup.clearCheck(RadioGroup.java:209)
at com.grawlix.parkingally.ParkingLayoutFragment$2.onCheckedChanged(ParkingLayoutFragment.java:46)
at android.widget.RadioGroup.setCheckedId(RadioGroup.java:173)
at android.widget.RadioGroup.check(RadioGroup.java:167)
at android.widget.RadioGroup.clearCheck(RadioGroup.java:209)

read: unexpected EOF!

希望有人知道这是怎么回事。任何想法都表示赞赏,并对我的英语感到抱歉。

最佳答案

尝试下面的代码,rg 是您的第一个 radio 组,rg1 是第二个 radio 组,您的代码当前将面临 OOM 错误。 clearChecks() 会触发 setOnCheckedChangeListener() 你需要检查返回的 View 是否为 null 。

rg = findViewById(R.id.rg);
rg1 = findViewById(R.id.rg1);

rg.setOnCheckedChangeListener((radioGroup, i) -> {
RadioButton rb = findViewById(i);
if (rb != null && rb.isChecked()) {
rg1.clearCheck();
}
});


rg1.setOnCheckedChangeListener((radioGroup, i) -> {
RadioButton rb = findViewById(i);
if (rb != null && rb.isChecked()) {
rg.clearCheck();
}
});

关于java - 使用 onCheckedChangeListener 清除多个单选组上的选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54723814/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com