Java 单选按钮保持选中状态,即使在I';我选择了另一个单选按钮

Java 单选按钮保持选中状态,即使在I';我选择了另一个单选按钮,java,android,Java,Android,如果有人选择了其中一个单选按钮,则即使用户启动另一个活动或应用程序关闭时,该按钮也应保持选中状态。使用我在下面实现的代码,“miles.btn.setchecked(MilesButtonState)”在应用程序启动时已经检查了miles_btn。当我选择公里数并返回活动时,里程数仍处于选中状态,而公里数已取消选中 问题:如果用户选择公里数,我如何保持公里数处于选中状态,而不是默认返回英里数 注意:如果我将km_btn.setchecked(KMbuttonState)移动到miles_btn.

如果有人选择了其中一个单选按钮,则即使用户启动另一个活动或应用程序关闭时,该按钮也应保持选中状态。使用我在下面实现的代码,“miles.btn.setchecked(MilesButtonState)”在应用程序启动时已经检查了miles_btn。当我选择公里数并返回活动时,里程数仍处于选中状态,而公里数已取消选中

问题:如果用户选择公里数,我如何保持公里数处于选中状态,而不是默认返回英里数

注意:如果我将km_btn.setchecked(KMbuttonState)移动到miles_btn.setchecked(MilesButtonStates)下,则应用程序在启动应用程序时选择了km_btn,而不是miles_btn

顺便说一下,如果用户没有选择,那么默认情况下应该选择km_btn,如下面的xml代码所示

             <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 btn
miles\u btn.setOnClickListener(…setDistanceChoice(“miles”)…
他已经在他的代码中这样做了!@PrajwalW问题已经编辑好了。你可以查看历史记录
if(getDistanceChoice().equals("MILES")){
   miles_btn.setChecked(true);
}else { //getDistanceChoice().equals("KM")
   kilometer_btn.setChecked(true);
}