Java 单选按钮保持选中状态,即使在I';我选择了另一个单选按钮
如果有人选择了其中一个单选按钮,则即使用户启动另一个活动或应用程序关闭时,该按钮也应保持选中状态。使用我在下面实现的代码,“miles.btn.setchecked(MilesButtonState)”在应用程序启动时已经检查了miles_btn。当我选择公里数并返回活动时,里程数仍处于选中状态,而公里数已取消选中 问题:如果用户选择公里数,我如何保持公里数处于选中状态,而不是默认返回英里数 注意:如果我将km_btn.setchecked(KMbuttonState)移动到miles_btn.setchecked(MilesButtonStates)下,则应用程序在启动应用程序时选择了km_btn,而不是miles_btn 顺便说一下,如果用户没有选择,那么默认情况下应该选择km_btn,如下面的xml代码所示Java 单选按钮保持选中状态,即使在I';我选择了另一个单选按钮,java,android,Java,Android,如果有人选择了其中一个单选按钮,则即使用户启动另一个活动或应用程序关闭时,该按钮也应保持选中状态。使用我在下面实现的代码,“miles.btn.setchecked(MilesButtonState)”在应用程序启动时已经检查了miles_btn。当我选择公里数并返回活动时,里程数仍处于选中状态,而公里数已取消选中 问题:如果用户选择公里数,我如何保持公里数处于选中状态,而不是默认返回英里数 注意:如果我将km_btn.setchecked(KMbuttonState)移动到miles_btn.
<RadioGroup
android:id="@+id/distance_btn_group"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginEnd="35dp"
android:gravity="end"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RadioButton
android:id="@+id/miles_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Miles"
android:textColor="#ffff"
android:gravity="start"
android:paddingTop="30dp"
android:paddingStart="-30dp"
android:paddingEnd="35dp"
android:onClick="buttonCheck"/>
<RadioButton
android:id="@+id/kilometer_btn"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="km"
android:textColor="#ffff"
android:gravity="start"
android:paddingTop="30dp"
android:paddingStart="-26dp"
android:checked="true"
android:paddingEnd="5dp"
android:onClick="buttonCheck"/>
</RadioGroup>
您应该将所有的
RadioButton
放入父RadioGroup
以允许一次进行单个选择
<RadioGroup
...>
<RadioButton
.../>
<RadioButton
.../>
</RadioGroup>
您的java代码逻辑不正确。请使用以下代码:
int selectedId = distancebtn_group.getCheckedRadioButtonId();
// find which radioButton is checked by id
if(selectedId == miles_btn.getId())
{
//your code logic for miles selection button
}
else if(selectedId == kilometer_btn.getId())
{
//your code logic for kilometer selection button
}
您的SharedReference使您的两个变量看起来彼此独立,而我猜您是在使用它来决定用户选择了哪个选项,我认为使用一个变量,即
distanceChoice
,它可以是布尔值,例如英里为true,公里为false,或者字符串“km”和“miles”“就像这个例子
public String getDistanceChoice(){
sharedPreferences=getSharedPreferences(Shared_info, Context.MODE_PRIVATE);
return sharedPreferences.getString(distance_info, "KM");
}
public void setDistanceChoice(String distanceChoice) {
SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();
sharedPrefsEditor.putString(distance_info, distanceChoice);
sharedPrefsEditor.apply();
}
当您要检查选择了哪一个时,您可以使用该选项进行比较:
if(getDistanceChoice().equals("MILES")){
miles_btn.setChecked(true);
}else { //getDistanceChoice().equals("KM")
kilometer_btn.setChecked(true);
}
您应该对这些单选按钮进行分组,以便告诉系统只能检查组中的一个。请将所有单选按钮保留在单选组中。我的单选按钮已在一个放射组下。我知道单选按钮应该在放射组下面。当我第一次发帖的时候,我只是没有复制广播组的部分。无线组部分不是问题所在。如何调用setDistanceChoice?字符串距离选择使此操作变得困难。您可以在buttonCheck函数或setOnClickListener中调用:
KM\u btn.setOnClickListener(…setDistanceChoice(“KM”)…
和miles\u btnmiles\u btn.setOnClickListener(…setDistanceChoice(“miles”)…
他已经在他的代码中这样做了!@PrajwalW问题已经编辑好了。你可以查看历史记录
if(getDistanceChoice().equals("MILES")){
miles_btn.setChecked(true);
}else { //getDistanceChoice().equals("KM")
kilometer_btn.setChecked(true);
}