java-在Android中制作一个chronometer计时器

问题描述

在Android中制作一个chronometer计时器
我想在Android中制作一个chronometer计时器,使用了timer和sheduleAtFixedRate 方法。看起来像是在timer的run方法中调用textview后,程序就会出错停止运行。我用的是以下的代码,哪里出错了呢?

Button boton_iniciar;TextView texto_cronometro;Timer count;int a = 0;public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_cronometro);    /**********************/    boton_iniciar = (Button) findViewById(R.id.button1);    texto_cronometro = (TextView) findViewById(R.id.textView1);    count= new Timer(""Contador"");    boton_iniciar.setOnClickListener(new OnClickListener() {        public void onClick(View v) {            // TODO Auto-generated method stub            count.scheduleAtFixedRate(new TimerTask() {                         @Override                public void run() {                    // TODO Auto-generated method stub                    a++;                    texto_cronometro.setText(String.valueOf(a));                }            } 100 100);        }    });}

解决方案

所有要改变UI对象的的action都应该在主UI中运行。

public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_cronometro);    /**********************/    boton_iniciar = (Button) findViewById(R.id.button1);    texto_cronometro = (TextView) findViewById(R.id.textView1);    count= new Timer(""Contador"");    boton_iniciar.setOnClickListener(new OnClickListener() {        public void onClick(View v) {            // TODO Auto-generated method stub            count.scheduleAtFixedRate(new TimerTask() {                         @Override                public void run() {                    // TODO Auto-generated method stub                    a++;                    ActivityCronometro.this.runOnUiThread(new Runnable() {                              @Override                    public void run() {                        texto_cronometro.setText(String.valueOf(a));                    }                });                }            } 100 100);        }    });}

解决方案二:
要操作界面控件,必须在runnable中,你可以查一下
参考代码:

private Handler handler = new Handler( );private Runnable runnable = new Runnable( ) {public void run ( ){atextview.setText(String.valueOf(a));handler.postDelayed(this1000); //继续Timer如果不继续,这句就不要}};handler.postDelayed(runnable1000); // 开始Timerhandler.removeCallbacks(runnable); //停止Timer 

解决方案三:
更新UI线程之外的用户界面。
用这些代码:

<youractivityname>.this.runOnUiThread(new Runnable() {    public void run() {        texto_cronometro.setText(String.valueOf(a));    }});

代替

texto_cronometro.setText(String.valueOf(a));
时间: 2025-01-21 05:22:33

java-在Android中制作一个chronometer计时器的相关文章

Excel中制作一个项目文件目录的两种方法

  Excel中制作一个项目文件目录的两种方法.如下图所示,就是一个项目文件夹内的所有文件: 接下来,先提取文件名称. 如果文件比较少,可以直接输入到Excel文档中,但是如果文件比较多,就要想想办法了. 方法一 在工程文件夹内,新建一个记事本文档,输入下面的内容后保存: DIR *.* /B >目录.TXT 将记事本文档的后缀名.txt 修改为.bat 然后双击这个文件,就会得到一个名为"目录"的记事本文件,里面会包含当前文件夹内的所有文件名. 这样就可以将目录中的文档名复制到

代码-如何解决Android中的一个小问题?

问题描述 如何解决Android中的一个小问题? 我在写android代码时候如下一段代码: public void cc(){ String aa=getHtml();//有点耗时 ......... } 在执行过程之中,程序还未等aa返回值时,就执行下面代码.如何让aa执行完后再执行下面代码. 解决方案 你可以这样的 public void cc(){ String aa=getHtml(); if(aa!=null){ //这里放下面执行的代码,这样就能等你上面执行完再执行下面的了,你看行

如何在 android 中设置一个用户名和密码文件

问题描述 如何在 android 中设置一个用户名和密码文件 我设置了两个edittext和一个button.我想设置一个特殊的用户名和密码,当我点击按钮时,如果用户名和密码正确,就会打开一个新的intent,否则显示一个toast.我用的下面的代码显示不同的toast,但是没有运行出来,总是显示 ""incorrect"".如何解决这个问题呢? b.setOnClickListener(new OnClickListener() { public void onC

在link环境中制作一个基于codefirst《网盘软件》,请问如何防止用户恶意上传?

问题描述 在link环境中制作一个基于codefirst<网盘软件>,请问如何防止用户恶意上传? 在link环境中制作一个基于codefirst<网盘软件>,请问如何防止用户恶意上传? 解决方案 这个简单,一个是加上验证码,可以防止机器自动提交http://jingyan.baidu.com/article/2fb0ba4057ee5600f3ec5f73.htmlhttp://www.360doc.com/content/13/0220/11/10504424_266707831

link中制作一个网盘软件,请问codefirst如何判断当前用户上传的文件是否超过2GB

问题描述 link中制作一个网盘软件,请问codefirst如何判断当前用户上传的文件是否超过2GB link中制作一个网盘软件,请问codefirst如何判断当前用户上传的文件是否超过2GB 解决方案 客户端与服务器做协议,上传内容前先将文件信息上传到服务器.其中,文件信息包含文件名.文件大小等信息.这样服务就可以判断出用户上传的文件是否超出限制的大小.

edittext-如何清除 android 中的一个 numeric editText?

问题描述 如何清除 android 中的一个 numeric editText? 在android应用程序中,有一个EditText 要保持numeric 值,所以我按照下面的方法定义: <EditText android:layout_width="fill_parent" android:id="@+id/TextNumb" android:layout_height="wrap_content" android:gravity=&qu

java,android中intent对象和bundle对象有和区别?

问题描述 java,android中intent对象和bundle对象有和区别? android中intent对象和bundle对象有和区别?这两个对象都存在吗?有什么用的,传递数据吗还是怎么 的 解决方案 intent内部就是用bundle存储的 解决方案二: http://m.blog.csdn.net/blog/na604365019/8042977 解决方案三: android 中bundle对象

Android中自定义一个View的方法详解_Android

本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助. 注意点① 用xml定义Layout时,Root element 最好使用merge 当我们需要继承一个布局比较复杂的ViewGroup(比较多的是LinearLayout.RelativeLayout)时,通常会用xml来

android中启动一个Activtity的问题

问题描述 android中启动一个Activtity的问题 startActivity(Intent)和startActivityForResult(Intent)启动一个Activity //有区别吗? startService(Intent)和bindService(Intent)启动一个service //有区别吗? 解决方案 startActivityForResult与startActivity的不同之处在于: 1, startActivity( ) 仅仅是跳转到目标页面,若是想跳回当