热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

即使我选择了另一个单选按钮,单选按钮也保持选中状态

如果某人选择了这些单选按钮之一,则即使用户开始另一个活动或应用程序关闭

如果某人选择了这些单选按钮之一,则即使用户开始另一个活动或应用程序关闭,它也应保持选中状态。使用下面实现的代码,在应用程序启动时,已经对“ miles.btn.setchecked(MilesButtonState)进行了miles_btn的检查。当我选择kmleight_btn并返回到活动时,在公里数已被设置的情况下,miles_btn仍然处于选中状态取消选择。

问题:如果用户选择了km-btn,如何保持它处于选中状态,而不是默认返回Miles_btn。

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

顺便说一句,如果用户未进行选择,则默认情况下应选择km_btn,如下面的xml代码所示。

android:id="@+id/distance_btn_group"
android:layout_
android:layout_
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">
android:id="@+id/miles_btn"
android:layout_
android:layout_
android:text="Miles"
android:textColor="#ffff"
android:gravity="start"
android:paddingTop="30dp"
android:paddingStart="-30dp"
android:paddingEnd="35dp"
android:OnClick="buttonCheck"/>
android:id="@+id/kilometer_btn"
android:layout_
android:layout_
android:text="km"
android:textColor="#ffff"
android:gravity="start"
android:paddingTop="30dp"
android:paddingStart="-26dp"
android:checked="true"
android:paddingEnd="5dp"
android:OnClick="buttonCheck"/>

即使我选择了另一个单选按钮,单选按钮也保持选中状态

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
sharedPreferences = getSharedPreferences(Shared_info,Context.MODE_PRIVATE);
Boolean MilesButtOnState= sharedPreferences.getBoolean(MILESBTN,false);
sharedPreferences = getSharedPreferences(Shared_info,Context.MODE_PRIVATE);
Boolean KMButtOnState= sharedPreferences.getBoolean(KMBTN,false);
distancebtn_group = findViewById(R.id.distance_btn_group);
miles_btn = (RadioButton) findViewById(R.id.miles_btn);
kilometer_btn = (RadioButton) findViewById(R.id.kilometer_btn);
kilometer_btn.setChecked(KMButtonState);
miles_btn.setChecked(MilesButtonState);
kilometer_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = sharedPreferences.edit();
boolean kmChecked = kilometer_btn.isChecked();
editor.putBoolean(KMBTN,kmChecked);
editor.apply();
}
});
miles_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = sharedPreferences.edit();
Boolean milesChecked = miles_btn.isChecked();
editor.putBoolean(MILESBTN,milesChecked);
editor.apply();

正确答案:这对我有用。...

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
sharedPreferences = getSharedPreferences(Shared_info,MODE_PRIVATE);
distancebtn_group = findViewById(R.id.distance_btn_group);
miles_btn = (RadioButton) findViewById(R.id.miles_btn);
kilometer_btn = (RadioButton) findViewById(R.id.kilometer_btn);
kilometer_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = sharedPreferences.edit();
boolean kmChecked = kilometer_btn.isChecked();
editor.putBoolean(KMBTN,kmChecked);
editor.apply();
}
});
miles_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = sharedPreferences.edit();
boolean milesChecked = miles_btn.isChecked();
editor.putBoolean(MILESBTN,milesChecked);
editor.apply();
}
});
SharedPreferences sharedPreferences = getSharedPreferences(Shared_info,MODE_PRIVATE);
kilometer_btn.setChecked(sharedPreferences.getBoolean("kilometer_btn",true));
miles_btn.setChecked(sharedPreferences.getBoolean("miles_btn",false));
}

}


您应将所有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
}

,

您的共享首选项使您看起来两个变量彼此独立,而我猜您正在使用它来决定用户选择了哪个选项,我想使用一个dependencies {
// ...
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
变量,它可以是布尔值例如,对于英里为true,对于公里为false,或者在示例中为字符串“ KM”和“ MILES”。

distanceChoice

当您要检查选择了哪一个时,可以使用它进行比较:

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();
}

推荐阅读
author-avatar
mce
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有