Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android的第一个按钮在clearCheck()和旋转之后变得不可选

Android的第一个按钮在clearCheck()和旋转之后变得不可选
EN

Stack Overflow用户
提问于 2015-07-31 10:28:30
回答 2查看 1.1K关注 0票数 2

我在RadioGroups clearCheck方法和旋转我的应用程序方面有问题。我觉得这可能是谷歌的问题?

我有一个三个按钮的无线电组,在启动时,默认情况下在xml中选择第一个项目。

我的问题是,我有一个按钮调用无线电组clearCheck()。如果您旋转应用程序,然后尝试按下第一个无线电组项目,它将不会选择它。它尝试,它显示动画,但它仍然没有被选中。

我以为我要疯了,我的代码出了点问题,但我把它分解成了最简单的应用程序,只需要做一个新的应用程序。

如果我没有预选Button A(通过XML或代码),那么它可以正常工作,但是我需要预选这个按钮。

知道如何解决这个问题并默认选择A吗?

回购步骤

  1. 发射应用程序
  2. 选择收音机按钮B
  3. 按清楚检查
  4. 旋转应用程序
  5. 新闻广播按钮A

结果:A台不选择。如果然后按B或C,你可以再次按A,但在那之前不能按。

代码语言:javascript
运行
AI代码解释
复制
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);

    Button clearButton = (Button) findViewById(R.id.clearButton);

    clearButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            radioGroup.clearCheck();
        }
    });
}
}


<RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

 <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:checkedButton="@+id/radioButtonA"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/radioButtonA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="A" />

        <RadioButton
            android:id="@+id/radioButtonB"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="B" />

        <RadioButton
            android:id="@+id/radioButtonC"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="C" />

    </RadioGroup>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Clear"
        android:id="@+id/clearButton"
        android:layout_below="@+id/searchRadioGroup"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="114dp" />

</RelativeLayout>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 11:42:01

旋转时,检查的id由于android:checkedButton="@+id/radioButtonA"而被重置。

如果有检查按钮,CompoundButtononRestoreInstanceState再次将选中的按钮重置为正确的选中按钮。

相反,如果没有检查按钮,按钮A的onRestoreInstanceState会将其重置为未选中。RadioGroup没有处理此场景,因为它不是为处理未检查而设计的。

因此,我们的结果是RadioGroup跟踪buttonA作为checked,buttonA跟踪自己作为未检查。当您单击buttonA时,检查将被处理,但是由于check()方法中的短路逻辑,UI不会更新,因为它假设由于id已经匹配它手头的mCheckedId,所以应该已经检查了该按钮:

代码语言:javascript
运行
AI代码解释
复制
// don't even bother
if (id != -1 && (id == mCheckedId)) {
    return;
}

我想这可以被认为是一个错误,但它最终归结为一些奇怪的设计选择在你这方面。您将其设置为默认为buttonA,这意味着用户在正常情况下不能取消选中任何按钮,然后提供一个清除按钮,使它们处于正常情况下无法达到的非默认状态。因此,有两种可能的解决方案将使您的UI设计选择成为焦点:

1)如果您希望始终有一个选中按钮,请将重置按钮重置为默认状态。

代码语言:javascript
运行
AI代码解释
复制
clearButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mRadioGroup.check(R.id.radioButtonA);
    }
});

2)如果您想要有可能没有选中按钮,不要默认为任何东西。

票数 1
EN

Stack Overflow用户

发布于 2019-09-07 04:28:04

我的应用程序有这个问题。我作弊了。我创建了一个新的收音机,但是我选择了它的能见度。在那之后,我把setcheked=(是真的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31752800

复制
相关文章
python for循环多个参数处理_python for循环嵌套
实际上,“使用for循环遍历数组的最简单方法”(Python类型被命名为“list”BTW)是第二种方法,即for item in somelist:
全栈程序员站长
2022/09/22
2.3K0
PythonWebServer如何同时处理多个请求
源于知乎上一个问题:https://www.zhihu.com/question/56472691/answer/293292349
the5fire
2019/03/01
1.9K0
【Python】函数进阶 ① ( 函数返回多个返回值 | 函数参数传递类型简介 | 位置参数 | 关键字参数 )
在函数中 , 如果要 返回 多个返回值 , 可以 在 return 语句中 , 设置多个返回值 , 这些返回值之间使用 逗号 隔开 , 这些返回值的类型是 元组 tuple 类型的 ;
韩曙亮
2023/10/11
1.6K0
【说站】python关键字如何传递参数
1、关键词传递以“形参变量名=实参”的形式参与实参关联,根据形参的名称进行参数传递,使实参和形参的顺序不一致。
很酷的站长
2022/11/23
9460
Python函数参数总结(位置参数、默认参数、可变参数、关键字参数和命名关键字参数)
Python函数的参数多达5种,不像Java那样参数只有一种,而是像C++那样提供默认参数,除此之外,还提供可变参数、关键字参数、命名关键字参数,这样就使得Python函数的参数变得十分复杂。但复杂意味着灵活便捷,Python语言之所以流行起来,与起本身巨大的灵活性是分不开的。可以说Python是最方便使用的语言。 Python参数类型: - 位置参数(positional arguments,官方定义,就是其他语言所说的参数) - 默认参数(类似C++的默认参数) - 可
Steve Wang
2018/02/05
22.3K0
Python函数参数总结(位置参数、默认参数、可变参数、关键字参数和命名关键字参数)
Golang 获取GET、POST参数及处理上传多个文件
http.request的三个属性Form、PostForm、MultipartForm:
IT工作者
2022/06/30
2.1K0
Python 的 map 函数也可以处理多个参数的函数
比起 map 带给程序员的理解负担,大多数 Python 程序员更喜欢列表推导来解决问题。
somenzz
2022/10/25
2.9K0
Python 的 map 函数也可以处理多个参数的函数
python返回多个参数
比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:
狼啸风云
2020/07/16
2.7K0
Python 关键字参数和可变参数
如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过命名它们来给这些参数赋值——这就是python关键字参数(Keyword Arguments)——我们使用命名(关键字)而非位置(一直以来我们所使用的方式)来指定函数中的参数。
py3study
2020/01/16
1.2K0
JS中如何处理多个ajax并发请求?
通常 为了减少页面加载时间,先把核心内容显示处理,页面加载完成后再发送ajax请求获取其他数据 这时就可能产生多个ajax请求,为了用户体验,最好是发送并行请求,这就产生了并发问题,应该如何处理? (1)并行改串行 如果业务逻辑和用户体验允许的情况下,可以改为串行,处理起来最简单 function async1(){ //do sth... async2(); } function async2(){ //do sth... } async1(); (2)回调计数 function
dys
2018/04/02
5.5K0
函数的关键字参数
def func1(name, age, sex, *args): ''' 打印姓名,年龄,性别 ''' print(name) print(age) print(sex) # func1('python', 28,sex='man','s','23') ## 工作经验:不定长参数都是放到最后 func1(name='python', age=30, sex='nv') help(func1) # def func1(a,b, c=100,*args,**
汪凡
2018/05/29
5470
Seata如何处理跨多个请求的事务?
Seata 是一种开源的分布式事务解决方案,能够处理跨多个请求的事务,适用于各种容器、语言和数据访问类型。在微服务架构下,依赖多个服务的操作可能导致分布式事务的问题。Seata 提供了完整的解决方案以确保数据的一致性和可靠性。
用户1289394
2023/09/11
2940
Seata如何处理跨多个请求的事务?
如何将多个参数传递给 React 中的 onChange?
在 React 中,一些 HTML 元素,比如 input 和 textarea,具有 onChange 事件。onChange 事件是一个非常有用、非常常见的事件,用于捕获输入框中的文本变化。有时候,我们需要将多个参数同时传递给 onChange 事件处理函数,在本文中,我们将介绍如何实现这一目标。
网络技术联盟站
2023/06/07
2.8K0
Logstash:处理多个 input
这里的 input 可以支持多个 input,同时多个 worker 可以处理 filter 及 output:
腾讯云大数据
2020/07/31
2.8K0
Logstash:处理多个 input
如何优雅地处理命令行参数?
我们在Linux用到的命令常常支持很多参数,那么如何写一个程序,也像Linux命令一样支持很多参数呢?有什么什么优雅的处理方法?
编程珠玑
2019/08/21
1.1K0
如何给PHP添加多个错误处理函数
一些常规的PHP框架都会对PHP的错误、异常进行异常处理封装,方便框架日志记录,开发的时候方便处理。我们先看看几个框架错误处理:
写PHP的老王
2019/08/12
1.9K0
如何给PHP添加多个错误处理函数
图像处理中C++如何同时返回多个值
1 . pair<T,T> 返回两个值 //返回两个值的情况 pair<vector<double>,int> R_R(Mat& img) { int n=img.rows; vector<double> a; unsigned int m=img.cols; unsigned int k=img.rows; for(unsigned int i=0;i<m;i++) { for(unsigned int j=0;j<k;j++)
用户9831583
2022/06/16
8000
mybatis 使用tips - 使用多个参数
执行如下命令: mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate 可以使用mybatis generator mybatis 使用多个参数 自定义方法需要根据多个查询条件去查询: SELECT * FROM `db_demo`.`hot_topic` WHERE lang='english' AND category='017' AND topic_type='video' ORDER BY score DESC; 推荐使用
千往
2018/01/24
1.7K0
方法关键字WebMethod,参数关键字Abstract,Constraint,Deprecated
指定此方法是否为web method。仅适用于定义为web service或web客户端的类。
用户7741497
2022/07/07
4210
Swift 使用lexicographicallyprecedes 多个参数排序
版权声明:转载请标明出处 https://blog.csdn.net/ZY_FlyWay/article/details/89184264
星宇大前端
2019/04/18
1.2K0
Swift  使用lexicographicallyprecedes 多个参数排序

相似问题

如何解决ubuntu中unicode显示错误(不同)字符的问题?

10

需要哪种字体才能显示特定的Unicode字符?

10

WSL中缺少的字体

30

在bash提示符中更改unicode字符的字体大小

10

缺少Ubuntu字体

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文