一段时间后,取消切换按钮 [英] Uncheck ToggleButton after some period of time

查看:194
本文介绍了一段时间后,取消切换按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望我的切换按钮是一段时间后,未选中,当我检查一下。我使用Timer和TimerTask但我的应用程序始终强制关闭当我试图做到这一点。这是code:

 公共类Vjezba5Activity延伸活动{TimerTask的TimerTask11;
定时器定时器1 =新的Timer();/ **当第一次创建活动调用。 * /
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    最后切换按钮TB1 =(切换按钮)findViewById(R.id.toggleButton1);
    TB1.setOnClickListener(新OnClickListener(){
        公共无效的onClick(视图v){
            如果(TB1.isChecked()){
                TimerTask11 =新的TimerTask(){
                      公共无效的run(){
                          TB1.setChecked(假);
                      }
                  };
                  timer1.schedule(TimerTask11,1000);
            }
            其他{
                Toast.makeText(Vjezba5Activity.this,取消选中Toast.LENGTH_SHORT).show();
            }        }
    });
}


解决方案

您只能更新从主线程的用户界面。

尝试使用的处理程序。

  @覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    最后切换按钮TB1 =(切换按钮)findViewById(R.id.toggleButton1);
    处理程序处理程序=新的处理程序();
    TB1.setOnClickListener(新OnClickListener(){
        公共无效的onClick(视图v){
            如果(TB1.isChecked()){
                handler.postDelayed(新的Runnable(){                    公共无效的run(){
                         TB1.setChecked(假);
                    }
                },1000);
            }
            其他{
                Toast.makeText(Vjezba5Activity.this,取消选中Toast.LENGTH_SHORT).show();
            }        }
    });
}

I want my ToggleButton to be unchecked after some period of time when i check it. I am using Timer and TimerTask but my application always force close when i try to do this. This is the code:

public class Vjezba5Activity extends Activity {

TimerTask TimerTask11;
Timer timer1 = new Timer();

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final ToggleButton TB1 = (ToggleButton) findViewById(R.id.toggleButton1);
    TB1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (TB1.isChecked()){
                TimerTask11 = new TimerTask() {
                      public void run() {
                          TB1.setChecked(false);
                      }
                  };
                  timer1.schedule(TimerTask11, 1000);
            }
            else {
                Toast.makeText(Vjezba5Activity.this, "Uncheck", Toast.LENGTH_SHORT).show();
            }

        }
    });
}

解决方案

You can only update the UI from the main thread.

Try using a handler.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final ToggleButton TB1 = (ToggleButton) findViewById(R.id.toggleButton1);
    Handler handler = new Handler();
    TB1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (TB1.isChecked()){
                handler.postDelayed(new Runnable() {

                    public void run() {
                         TB1.setChecked(false);
                    }
                }, 1000);
            }
            else {
                Toast.makeText(Vjezba5Activity.this, "Uncheck", Toast.LENGTH_SHORT).show();
            }

        }
    });
}

这篇关于一段时间后,取消切换按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆