Java 使用while循环更新textView?
我编写了一个秒表,但它可以在java上工作,但不能在Android上工作。如果我按下按钮,它什么也不做。可能是Eclipse安装错误吗Java 使用while循环更新textView?,java,android,while-loop,textview,Java,Android,While Loop,Textview,我编写了一个秒表,但它可以在java上工作,但不能在Android上工作。如果我按下按钮,它什么也不做。可能是Eclipse安装错误吗 package com.example.stoppuhr; import java.text.SimpleDateFormat; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget
package com.example.stoppuhr;
import java.text.SimpleDateFormat;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
long start;
long millis;
public void onClick(View v) {
Button start1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
TextView textView1 = (TextView)findViewById(R.id.textView1);
start1.setOnClickListener(this);
我想这就是问题所在
if (v.getId() == start1.getId()){
textView1.setText("moldu");
start = System.currentTimeMillis();
while (true){
millis = System.currentTimeMillis()-start;
SimpleDateFormat sdfDate = new SimpleDateFormat("mm:ss.SSS");//dd/MM/yyyy
String ausgeben = sdfDate.format(millis);
textView1.setText(ausgeben);
try {
Thread.sleep(30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
感谢您的帮助在
onCreate
Button start1,button2
TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
textView1 = (TextView)findViewById(R.id.textView1);
start1.setOnClickListener(this);
}
您还在ui线程上调用Thread.sleep(30)
。这将阻止ui线程
从文件中引用
如果您实现了线程
或句柄线程
,请确保在等待工作线程完成时UI线程没有阻塞-不要调用线程.等待()
或线程.睡眠()
确保不要在ui线程上调用Thread.sleep()
我建议你看一下倒计时
公共静态无效睡眠(长时间)
//以毫秒为单位
在API级别1中添加会导致发送此消息的线程
在给定的时间间隔内睡眠(以毫秒为单位)。这个
精度无法保证-线程可能睡眠时间大于或小于
请求
参数时间睡眠时间(毫秒)。投掷
InterruptedException,如果在
它正在睡觉,请参见interrupt()
在
onCreate中初始化视图
Button start1,button2
TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
textView1 = (TextView)findViewById(R.id.textView1);
start1.setOnClickListener(this);
}
您还在ui线程上调用Thread.sleep(30)
。这将阻止ui线程
从文件中引用
如果您实现了线程
或句柄线程
,请确保在等待工作线程完成时UI线程没有阻塞-不要调用线程.等待()
或线程.睡眠()
确保不要在ui线程上调用Thread.sleep()
我建议你看一下倒计时
公共静态无效睡眠(长时间)
//以毫秒为单位
在API级别1中添加会导致发送此消息的线程
在给定的时间间隔内睡眠(以毫秒为单位)。这个
精度无法保证-线程可能睡眠时间大于或小于
请求
参数时间睡眠时间(毫秒)。投掷
InterruptedException,如果在
它正在睡觉,请参见interrupt()
是一个应该在单击按钮时调用的方法,但是您必须为您的按钮向类注册OnClickListener。您可以尝试在onClick中执行此操作
因此,您的类(MainActivity
)将永远不会注册为OnClickListener。尝试移动此项:
Button start1 = (Button)findViewById(R.id.button1);
start1.setOnClickListener(this);
要重新创建,请执行以下操作
是一个应该在单击按钮时调用的方法,但是您必须为您的按钮向类注册OnClickListener。您可以尝试在onClick中执行此操作
因此,您的类(MainActivity
)将永远不会注册为OnClickListener。尝试移动此项:
Button start1 = (Button)findViewById(R.id.button1);
start1.setOnClickListener(this);
要创建onCreate
您需要做的第一件事:addOnClickListener()
,您可以阅读它。我会用谷歌来了解它是如何工作的
如果您将此添加到按钮,请使用
Button buttonname = (Button) findViewById(R.id.yourbuttonid);
buttonname.setOnClickListener(this);
在您的onCreate()
方法中,您成功地将onClickListener()
添加到按钮中。
如果现在按下此按钮,将调用onClick()
。您需要做的第一件事:addOnClickListener()
,您可以阅读它。我会用谷歌来了解它是如何工作的
如果您将此添加到按钮,请使用
Button buttonname = (Button) findViewById(R.id.yourbuttonid);
buttonname.setOnClickListener(this);
在您的onCreate()
方法中,您成功地将onClickListener()
添加到按钮中。
如果现在按下此按钮,将调用onClick()
。您的意思是什么,但它可以与java一起工作,但不是在Android上?我在一个普通java应用程序上尝试了相同的代码,但不同之处在于:System.out.println和textview.settext您正在阻止UI线程!阅读Android中的UI线程。你说的“但它能在java中工作,但不能在Android上工作”是什么意思?我在一个普通java应用程序中尝试了相同的代码,但有一点不同:System.out.println和textview.SetText你在阻止UI线程!了解Android中的UI线程。