java - 使用微调器作为菜单 - 二进制选择
问题描述
我有一个微调器控件,允许我的用户选择一个广播电台,但(由于屏幕空间有限)我也尝试使用 SAME 控件来静音/取消静音和关闭。我想在用户选择 MUTE 时更改所选电台的格式(以及将 MUTE 重新描述为 UNMUTE),并在他们选择 UNMUTE 或再次选择电台时将其恢复为正常。
我的问题是,如果我选择 MUTE,虽然我可以重新格式化文本以显示静音电台,但微调器控件认为所选索引是 MUTE/UNMUTE 条目的索引,因此选择 UNMUTE 不会触发事件,因为没有似乎没有改变。如何捕捉 UNMUTE 的选择?
private RadioArrayAdapter adapter;
private CharSequence mSelectedFrequency = "Radio 4";
private SceneFragmentListener mListener;
public interface SceneFragmentListener{
void onRadioSet(StringSetting);
}
//Spinner populated when the fragment is set up in onCreateView()
spnRadio.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView t = (TextView) view;
String s = t.getText();
if ("OFF".equals(s)) {
adapter.setSelection(position); //This just causes the selected item to be highlighted
t.setTextColor(getResources().getColor(R.color.colorRadioOff));
t.setPaintFlags(t.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
mSelectedFrequency = "OFF";
mListener.onRadioSet("OFF");
} else if "MUTE".equals(s) {
t.setText(mSelectedFrequency);
t.setTextColor(getResources().getColor(R.color.colorRadioMute));
t.setPaintFlags(t.getPaintFlags()|Paint.STRIKE_THRU_TEXT_FLAG);
mRadioFreqs.set(0,"UNMUTE");
mListener.onRadioSet("MUTE");
} else if "UNMUTE".equals(s) {
t.setText(mSelectedFrequency);
t.setTextColor(getResources().getColor(R.color.colorRadioOn));
t.setPaintFlags(t.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
mRadioFreqs.set(0,"MUTE");
mListener.onRadioSet("UNMUTE");
} else {
adapter.setSelection(position);
t.setTextColor(getResources().getColor(R.color.colorRadioOn));
t.setPaintFlags(t.getPaintFlags()&(~Paint.STRIKE_THRU_TEXT_FLAG));
mSelectedFrequency = s;
mListener.onRadioSet(s);
}
}
}
我尝试插入一个布尔阻塞器并在静音和取消静音 if 块中递归调用 onItemSelected() 但在我看来,直到我的代码完成之前才真正进行选择,所以这没有效果。
谢谢你看...
解决方案
推荐阅读
- reactjs - 无法解析模块反应导航
- c# - 如何在 Bot Framework .NET for Teams 中处理 CardAction 按钮点击?
- mysql-workbench - 在 MySQL Workbench 中保存视图时我可以停止“美化”吗
- swiftui - 如何使用 addSnapshotListener 获取异步元素的数据数量
- c# - 托管 Blazor WASM - 使用 AAD 进行身份验证,但使用 SQL 中的本地用户角色
- python-3.x - 带有 .png/ .jpeg 图像的散点图标记
- excel - 将 Web 浏览器自动化转换为 XmlHTTP 请求
- json - 如何使用带有firebase db的ReactJS上的动态路由在单个页面上通过id传递不同的数据?
- docker - 在 alpine docker 容器 cron 作业中运行 -i 时,ffmpeg 挂起
- r - 如何正确循环遍历 df 列表中的所有 csv 并将其呈现在全局环境中,而无需完整路径名或扩展名结尾为 df?