Java 创建片段时未设置切换按钮上的自定义文本

Java 创建片段时未设置切换按钮上的自定义文本,java,android,android-togglebutton,Java,Android,Android Togglebutton,目前我正在研究一个包含三个切换按钮的片段。在片段布局中,我有: <ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/corkRdToggle" android:layout_below="@+id/imageView2"

目前我正在研究一个包含三个切换按钮的片段。在片段布局中,我有:

        <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/corkRdToggle"
            android:layout_below="@+id/imageView2"
            android:layout_alignStart="@+id/imageView2"
            android:layout_marginRight="15dp"
            android:textSize="12sp" />

        <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/collegeStToggle"
            android:layout_below="@+id/imageView2"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:textSize="12sp" />

        <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/allRoomsToggle"
            android:layout_below="@+id/imageView2"
            android:layout_alignEnd="@+id/imageView2"
            android:layout_marginLeft="15dp"
            android:textSize="12sp" />
并将侦听器附加到它们:

    corkRdToggle.setOnClickListener(this);
    collegeStToggle.setOnClickListener(this);
    allRoomsToggle.setOnClickListener(this);
在我的onClick()中:

我有三个切换按钮,它们链接到布局中的按钮,文本已设置为打开和关闭状态,“所有房间”按钮已设置为在创建屏幕时默认处于活动状态。按下任何一个按钮都将激活,同时禁用其他两个按钮。除初始状态外,一切正常。创建屏幕时,“所有房间”按钮确实被激活,并显示文本,但其他两个切换按钮仅显示“关闭”:

按下其中一个按钮将停用“所有房间”按钮,所有按钮中将显示正确的文本:

只要屏幕还在使用,这种情况就一直存在(由于我的代表,我只能发布2个链接,相信我的话,它正在工作)


但是,当我重新创建屏幕时,问题又出现了。做了一点很好的调查,但似乎没有任何具体的相关信息,我的新手技能已经耗尽。如果有什么东西向你扑来,我会非常感谢你的指点,谢谢

而不是
setOnClickListener()
,尝试
setOnCheckChangeListener()


我倾向于只使用
onClickListener
进行切换,如果我想特别控制是否应该在单击时切换切换(例如,我想先显示警告或什么)

您需要将
setChecked(false)
设置为其他按钮,以将初始状态设置为关闭文本。

您尝试过setChecked(false)吗一开始,那些没有显示正确的初始文本?我只是尝试了一下,效果很好,你这个美人!非常感谢芮,谢谢!你想把它写在一个答案里,我会接受它吗?就这么做了,谢谢=)谢谢你的小费乔,我明天早上会调查的。我尝试添加Rui的建议,这解决了我遇到的问题,但如果使用setOnCheckChangeListener更好,我会在充电后尝试重新编写代码。谢谢你的建议:)@Thor IMO这是标准的解决方案,上面的答案只是回避问题,而不是解决问题
检查
该切换应该会触发您的侦听器,这反过来会取消选中其他切换,从而避免需要手动调用
setChecked()
,因为您已经在侦听器库中这样做了,花了这么长时间才回来纠正这个问题,我当时正快速赶往大学的最后期限,现在才又回来看按钮。你说得对,乔,这是正确的答案,谢谢!!
    corkRdToggle.setOnClickListener(this);
    collegeStToggle.setOnClickListener(this);
    allRoomsToggle.setOnClickListener(this);
        case R.id.corkRdToggle:
            if(allRoomsToggle.isChecked() || collegeStToggle.isChecked()){
                allRoomsToggle.setChecked(false);
                collegeStToggle.setChecked(false);
            }
            corkRdToggle.setChecked(true);

        break;

        case R.id.collegeStToggle:
            if(allRoomsToggle.isChecked() || corkRdToggle.isChecked()){
                allRoomsToggle.setChecked(false);
                corkRdToggle.setChecked(false);
            }
            collegeStToggle.setChecked(true);

        break;

        case R.id.allRoomsToggle:
            if(corkRdToggle.isChecked() || collegeStToggle.isChecked()){
                corkRdToggle.setChecked(false);
                collegeStToggle.setChecked(false);
            }
            allRoomsToggle.setChecked(true);

        break;
corkRdToggle.setOnCheckChangeListener(this);
collegeStToggle.setOnCheckChangeListener(this);
allRoomsToggle.setOnCheckChangeListener(this);