创建片段时未设置切换按钮上的自定义文本
Custom text on toggle buttons not setting when fragment is created
我目前正在处理一个包含三个切换按钮的片段。在片段布局中,我有:
<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" />
在我的片段 onViewCreated() 方法中,我通过 id 找到切换按钮,设置 'on' 和 'off' 文本,并将一个按钮设置为活动:
corkRdToggle = (ToggleButton) view.findViewById(R.id.corkRdToggle);
collegeStToggle = (ToggleButton) view.findViewById(R.id.collegeStToggle);
allRoomsToggle = (ToggleButton) view.findViewById(R.id.allRoomsToggle);
corkRdToggle.setTextOn("Cork Rd.");
collegeStToggle.setTextOn("College St.");
allRoomsToggle.setTextOn("All Rooms");
collegeStToggle.setTextOff("College St.");
allRoomsToggle.setTextOff("All Rooms");
corkRdToggle.setTextOff("Cork Rd.");
allRoomsToggle.setChecked(true);
并将监听器附加到它们:
corkRdToggle.setOnClickListener(this);
collegeStToggle.setOnClickListener(this);
allRoomsToggle.setOnClickListener(this);
在我的 onClick() 中:
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;
我有三个切换按钮,它们链接到布局中的按钮,文本已设置为打开和关闭状态,'All Rooms' 按钮已设置为激活状态创建屏幕时的默认值。无论按下哪个按钮都会激活,同时停用其他两个按钮。一切正常......除了初始状态。创建屏幕时 'All Rooms' 按钮确实被激活,并显示文本,但其他两个切换按钮仅显示 'OFF':
When screen is created
按其中任何一个都会停用 'All Rooms' 按钮,并且所有按钮中都会显示正确的文本:
Proper text showing
只要使用屏幕,情况就会一直如此(由于我的代表,我只能 post 2 个链接,相信我的话,它正在工作)。
然而,当我重新创建屏幕时,问题又回来了。对此做了很多调查,但似乎没有任何与此具体相关的信息,而且我的新手技能已经用尽了。如果有任何事情突然发生在您身上,我将非常感谢您的指点,谢谢!
而不是setOnClickListener()
,试试setOnCheckChangeListener()
corkRdToggle.setOnCheckChangeListener(this);
collegeStToggle.setOnCheckChangeListener(this);
allRoomsToggle.setOnCheckChangeListener(this);
我倾向于只使用 onClickListener
进行切换,当我想专门控制切换是否确实应该在点击时切换(例如,我想先显示警告或其他东西)
您需要将setChecked(false)
设置为其他按钮以设置初始状态OFF文本。
我目前正在处理一个包含三个切换按钮的片段。在片段布局中,我有:
<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" />
在我的片段 onViewCreated() 方法中,我通过 id 找到切换按钮,设置 'on' 和 'off' 文本,并将一个按钮设置为活动:
corkRdToggle = (ToggleButton) view.findViewById(R.id.corkRdToggle);
collegeStToggle = (ToggleButton) view.findViewById(R.id.collegeStToggle);
allRoomsToggle = (ToggleButton) view.findViewById(R.id.allRoomsToggle);
corkRdToggle.setTextOn("Cork Rd.");
collegeStToggle.setTextOn("College St.");
allRoomsToggle.setTextOn("All Rooms");
collegeStToggle.setTextOff("College St.");
allRoomsToggle.setTextOff("All Rooms");
corkRdToggle.setTextOff("Cork Rd.");
allRoomsToggle.setChecked(true);
并将监听器附加到它们:
corkRdToggle.setOnClickListener(this);
collegeStToggle.setOnClickListener(this);
allRoomsToggle.setOnClickListener(this);
在我的 onClick() 中:
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;
我有三个切换按钮,它们链接到布局中的按钮,文本已设置为打开和关闭状态,'All Rooms' 按钮已设置为激活状态创建屏幕时的默认值。无论按下哪个按钮都会激活,同时停用其他两个按钮。一切正常......除了初始状态。创建屏幕时 'All Rooms' 按钮确实被激活,并显示文本,但其他两个切换按钮仅显示 'OFF':
When screen is created
按其中任何一个都会停用 'All Rooms' 按钮,并且所有按钮中都会显示正确的文本:
Proper text showing
只要使用屏幕,情况就会一直如此(由于我的代表,我只能 post 2 个链接,相信我的话,它正在工作)。
然而,当我重新创建屏幕时,问题又回来了。对此做了很多调查,但似乎没有任何与此具体相关的信息,而且我的新手技能已经用尽了。如果有任何事情突然发生在您身上,我将非常感谢您的指点,谢谢!
而不是setOnClickListener()
,试试setOnCheckChangeListener()
corkRdToggle.setOnCheckChangeListener(this);
collegeStToggle.setOnCheckChangeListener(this);
allRoomsToggle.setOnCheckChangeListener(this);
我倾向于只使用 onClickListener
进行切换,当我想专门控制切换是否确实应该在点击时切换(例如,我想先显示警告或其他东西)
您需要将setChecked(false)
设置为其他按钮以设置初始状态OFF文本。