Android 如何使用处理程序增加textview的值?(或其他解决方案)
首先,我已经试过了:Android 如何使用处理程序增加textview的值?(或其他解决方案),android,handler,android-handler,Android,Handler,Android Handler,首先,我已经试过了: 但是我有59个错误,是的,59个,正如我以前使用Eclipse时清楚地告诉你你有什么样的错误,如何修复它,Android Studio看起来是为有经验的人设计的。。。我甚至不知道该怎么做,去修复所有的错误(顺便说一句,当我试图修复某个错误时,我不知何故又破了10次) 所以。。。给定一个按钮和一个文本视图,如何增加文本视图(例如,点击游戏)并使其停止再次按下同一按钮: 如何设置每次“单击”之间的间隔 顺便说一下。。。我不需要解决方案,我需要了解线程或处理程序是如何工作的,是的
但是我有59个错误,是的,59个,正如我以前使用Eclipse时清楚地告诉你你有什么样的错误,如何修复它,Android Studio看起来是为有经验的人设计的。。。我甚至不知道该怎么做,去修复所有的错误(顺便说一句,当我试图修复某个错误时,我不知何故又破了10次) 所以。。。给定一个按钮和一个文本视图,如何增加文本视图(例如,点击游戏)并使其停止再次按下同一按钮: 如何设置每次“单击”之间的间隔
顺便说一下。。。我不需要解决方案,我需要了解线程或处理程序是如何工作的,是的,每个人都会向我推荐文档,但我需要看到一个简单的示例,一部分一部分地解释,通过阅读文档,我将比我已经了解的更多 给定一个按钮和一个文本视图,我如何增加文本视图(例如,点击游戏)并使其停止再次按下同一按钮:以及如何设置每次“点击”之间的间隔 根据您的
分数
和单击问题中的
小部件:
步骤1:在活动或片段中添加一个Runnable
字段。在这里,我将其称为incrementer
步骤2:在活动或片段中定义一个静态最终int DELAY
字段,以毫秒为单位定义所需的延迟周期(“间隔”)
步骤3:让您的按钮
使用postDelayed()
和removeCallbacks()
,基于递增器的状态
:
click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
if (incrementer==null) {
incrementer=new Runnable() {
@Override
public void run() {
i++;
score.setText(Integer.toString(i));
v.postDelayed(incrementer, DELAY);
}
};
incrementer.run();
}
else {
v.removeCallbacks(incrementer);
incrementer=null;
}
}
}
incrementer
字段提供两个角色。它跟踪我们是否在递增TextView
内容,递增的是实际代码
如果incrementer
为null
,我们目前不会增加TextView
。因此,我们分配incrementer
一个Runnable
,它可以增加TextView
。Runnable
还调用postDelayed()
说“嘿,在DELAY
毫秒后再次运行这个Runnable
”。我们第一次自己run()
运行Runnable
,在开始时填充TextView
,并触发postDelayed()
调用以安排下一个增量
然后将继续“循环”(
run()
调用postDelayed()
,计划将来调用run()
),直到用户再次单击该按钮。然后,我们看到incrementer
不是null
,因此我们必须增加TextView
,并且需要停止removeCallbacks()
取消最后一次postDelayed()
调用的计划,停止“循环”。我们将incrementer
设置为null
主要是为了为下一次按钮单击做好准备。从第一个错误开始。这是怎么一回事?是哪一行代码导致的?“当我试图修复某个问题时,不知何故我又打破了10个”这是所有程序员的共同经历,即使是我们中最有经验的人“我需要了解线程或处理程序到底是如何工作的”线程用于执行需要很长时间才能完成的任务,例如读取文件或下载图像。处理程序用于线程之间的通信。要完成手头的任务,您不需要这两个选项中的任何一个。请参阅我的第一条评论和您的问题,以显示您会遇到哪些错误。解决编译器错误是学习过程的一部分。对于迟到的“正确答案”勾选:D表示抱歉,并感谢您的解释。
click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
if (incrementer==null) {
incrementer=new Runnable() {
@Override
public void run() {
i++;
score.setText(Integer.toString(i));
v.postDelayed(incrementer, DELAY);
}
};
incrementer.run();
}
else {
v.removeCallbacks(incrementer);
incrementer=null;
}
}
}