有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓中使用多线程更新TextView

public class MainActivity extends Activity implements Runnable{
final TextView txtCounter = (TextView)findViewById(R.id.counter);
Thread mythread;
int i = 0;
boolean running = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button btnstart= (Button)findViewById(R.id.btnStart);
    final Button btnstop = (Button)findViewById(R.id.btnStop);
    
    btnstart.setOnClickListener(new View.OnClickListener() {
        
        @Override
        public void onClick(View arg0) {
            try{
                running = true;
                mythread = new Thread();
                mythread.start();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    });
    
    btnstop.setOnClickListener(new View.OnClickListener() {
        
        @Override
        public void onClick(View arg0) {
            try{
                running = false;
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    });
    
    
}



@Override
public void run(){
    try{
        while(i <= 1234567 && running){
            Thread.sleep(1000);
            i++;
            txtCounter.setText(i);
        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
  }

  }

我试着用两个按钮来做,当按下开始按钮时,它每秒递增一个数字,并更新文本视图,直到按下停止按钮。在活动区。xml文件只有一个文本视图和两个按钮,一个用于启动,另一个用于停止

我们按下停止按钮后,如果再次按下开始按钮,它将从上次更新的最后一个数字开始

但是我犯了个错误

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.prg4/com.example.prg4.MainActivity}: java.lang.NullPointerException

共 (1) 个答案

  1. # 1 楼答案

    我的回答可能不正确,因为我没有完全理解你。也许,你可以从this splash screen得到答案

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            textView.setText(charSequence.subSequence(0,index++));
            if(index <= charSequence.length()){
                handler.postDelayed(runnable,delay);
            }
        }
    };
    
    public void animatText(CharSequence cs){
        charSequence = cs;
        index = 0;
        textView.setText("");
        handler.removeCallbacks(runnable);
        handler.postDelayed(runnable,delay);
    }
    

    我把它添加到了闪屏上。将运行一个文本(二进制)

    输出如下:

    B i n a r y

    每封信都一个接一个地显示出来。我不确定这是不是你的答案