Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用while循环更新textView?_Java_Android_While Loop_Textview - Fatal编程技术网

Java 使用while循环更新textView?

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

我编写了一个秒表,但它可以在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.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线程。