热门标签 | 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();
}

推荐阅读
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • 本文介绍了如何在iOS应用中自定义导航栏按钮,包括使用普通按钮和图片生成导航条专用按钮的方法。同时,探讨了在不同版本的iOS系统中实现多按钮布局的技术方案。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文详细探讨了Android Activity中View的绘制流程和动画机制,包括Activity的生命周期、View的测量、布局和绘制过程以及动画对View的影响。通过实验验证,澄清了一些常见的误解,并提供了代码示例和执行结果。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 圆形进度指示器忽略宽度/高度属性并且不缩放 ... [详细]
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社区 版权所有