- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我针对 Android 4.0.3 的应用程序中,我曾经将一个按钮用作开关。单击该按钮会更改其资源(在播放/暂停之间切换),并且某些任务会在后台执行。特殊之处在于,当 Button 被按下时,我希望切换器在短时间内不可用(以防止快速切换)。
为此,我创建了一个等待 X 秒的线程,如下所示:
void blockButton(){
new Thread() {
public void run(){
try {
synchronized(this){
button_ready = false;
sleep(5000);
button_ready = true;
}
}
catch(InterruptedException ex){}
}
}.start();
}
}
基本上在我的 Activity/onClickListener 中
if(button_ready){
// Start background stuff
changeButtonResource();
button.setEnabled(false);
blockButton();
button.setEnabled(true);
}
到目前为止一切顺利,一切顺利。但我最终希望将其更新为 Switch。代码几乎相同(除了 onClickListener 变成了 OnCheckedChangeListener)。
但是现在当我点击一次按钮时,再次点击将允许更改它的资源 - 但后台任务不会启动(我已经用振动器和其他人试过了,它只会改变资源)。
所以我的 Button 几乎拥有了过去的行为,但资源变得困惑了。任何想法都将非常受欢迎!谢谢。
最佳答案
您不需要创建另一个线程。 View.postDelayed(Runnable)
为您提供了一种在超时后启用按钮(或执行其他 UI 操作)的更简单的方法。您的代码应如下所示:
class ... extends Fragment {
private final Runnable enabler = new Runnable() { public void run() {
button.setEnabled(true);
}};
private View button;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View result = ...
button = result.findViewById(...);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
button.setEnabled(false);
...
}
});
...
}
public void onDestroyView() {
...
button = null;
}
public void onPause() {
...
button.removeCallbacks(enabler);
}
public void onResume() {
...
button.setEnabled(true);
}
}
在您的Fragment
或Activity
消失之前调用removeCallbacks
对于避免因用户在禁用期间离开而导致的并发问题很重要。在这种情况下禁用回调后,重要的是要确保当用户返回您的 Fragment
或 Activity
时您不会“卡住”在禁用状态> 并且 View
恢复其保存的状态。
关于安卓 : Switch (ToggleButton) and threads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747334/
我正在尝试自定义我的 ToggleButtons,以便在选中时以绿色表示"is",在未选中时以红色表示“否”。 我创建了以下样式,它位于我的样式资源字典中。
我是 Android 开发的新手,所以如果这是一个“菜鸟”问题,我提前表示歉意。 使用 RelativeLayout,我有一个 ID 为 reminderToggle 的 ToggleButton:
我想为 ToggleButton 创建一个动画“切换”样式(就像在智能手机上一样)。 动画本身不是问题,当我点击它时,开关看起来不错并且动画。但它也会在加载并打开时进行动画处理。 当我加载我的 Vie
我有这段代码可以以编程方式按下按钮,但我想要一个适用于 ToggleButton 的版本。 public static void PushButton(Button b) { ButtonA
我为 ToggleButton 创建了一个 ContentTemplate 和 Style,它看起来就像你从 Microsoft 的 WebMatrix 中知道的那样。 但是,并非总是可以单击,也不会
我创建了一个从 ToggleButton 扩展的自定义切换按钮。 问题是它不尊重给定的 ToggleGroup。我可以选择多个。但如果您设置默认类 ToogleButton,它只允许我一次选择一个。
我正在为一个小游戏制作一个计算器,一切正常,直到我添加了一个切换按钮。该应用程序在启动时崩溃,但我找不到任何错误。 JAVA代码: . . . int colorOff = getRes
我希望我的 ToggleButton 在检查一段时间后不被选中。我正在使用 Timer 和 TimerTask,但当我尝试执行此操作时,我的应用程序总是强制关闭。这是代码: public class
这是怎么回事,如何解决? 按下 MyToggleButton。现在看起来像是立即按下(选中)。 同时 MyToggleButton_Checked 处理程序禁用 MyToggleButton。 现在按
切换按钮上的正常背景颜色和边框颜色是什么?示例: i.toggle11.setOnAction(e->{ if(i.toggle11.isSelected()){
ToggleButton 的背景突出其底部边框。 谁能告诉我我做错了什么? 我在 SceneBuilder 中为 ToggleButton 设置了 id。 CSS: #blue-unselected
我想在 JavaFX 中创建一个切换按钮,它将执行一个循环,并且仅当用户再次单击该按钮时才会停止;在 Activity 期间,循环将不断更改 TextField 中的文本... 这是 ToggleBu
触摸 ToggleButton 时,它的背景颜色没有改变。切换确实发生了,触摸时不断变化的文本证实了这一点。但颜色始终保持白色,即未选中状态。我做错了什么? 切换按钮: 它的背景是可绘制的 togg
我使用 3 个 ToggleButtons(A、B、C)来过滤数组的内容(使用 AND 条件)并在 ListView 中显示结果。 例如如果 A 为真而 B、C 为假... ListView 将只显示
我想将 7 个切换按钮组织成金字塔形,如下所示: ---b--- --b-b-- -b---b- b-----b 其中 b 代表切换按钮,- 代表空格。我也 wnat 整个金字塔来填充它的 paren
我有一个 CustomButton 类(扩展 LinearLayout),我在其中膨胀一个包含 ToggleButton 的布局(实际上这更复杂,但我在这里简化了问题)。 public class C
是的,我可以用 2 张图片创建 ToggleButton(打开,关闭)但是我想创建一个有 3-5 张图片的 ToggleButton。 例如,它什么时候关闭,我点击: 关闭图片 中图 在图片上 它什么
我是安卓新手。我正在创建一个使用切换按钮的应用程序。我希望切换按钮在按钮处于选中状态时执行一些任务,并在按钮未选中时执行其他任务。而且我希望切换按钮即使在用户关闭应用程序(通过按下后退开关)并返回时也
我有一个这样构造的切换按钮: self.bouton = gtk.ToggleButton() self.bouton.connect("clicked", self.fonct) 在我的程序中,我正
这是我的代码 private void buttonClickone(object sender, RoutedEventArgs e) { if (WhichV == -1) {
我是一名优秀的程序员,十分优秀!