【问题标题】:android app crashing when calling a timer [duplicate]调用计时器时android应用程序崩溃[重复]
【发布时间】:2017-06-03 23:21:17
【问题描述】:

计时器每分钟检查一次,如果小时有变化,则按钮需要变为绿色且可点击,否则保持红色且不可点击。

到目前为止,我收到此错误,但我不知道如何处理:-

android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        CHECK();
    }
}, 1*60*1000, 1*60*1000);



public void CHECK(){

    sqliteDbHelper_ = new Sqlite_DBHelper(getActivity());
    sqLiteDatabase = sqliteDbHelper_.getWritableDatabase();
    String[] columns = {"hour_only","JAKOST"};
    cursor = sqLiteDatabase.query("podatki", columns,null,null,null,null,null);
    Calendar calander = Calendar.getInstance();
    Integer currentHour = calander.get(Calendar.HOUR_OF_DAY);
    buttonSaveOnMainPage.setClickable(true);
    cursor.moveToLast();
    if (cursor.moveToLast()== false){
         lastInputedHour = 0;
    }
    else{
     lastInputedHour = cursor.getInt(0);
    }
    Log.e(TAG+"zadnja vnesena URA",""+lastInputedHour);
    Log.e(TAG+"trenutna URA",""+currentHour);
    if (lastInputedHour == currentHour){
        buttonSaveOnMainPage.setBackgroundResource(R.color.ColorRed);
        buttonSaveOnMainPage.setClickable(false);
    }
    else
        buttonSaveOnMainPage.setBackgroundResource(R.color.ColorGreenDark);
        buttonSaveOnMainPage.setClickable(true);
}

【问题讨论】:

标签: android


【解决方案1】:

这个错误是不言自明的。在 UI 元素的OnClickListener() 内实现计时器。这是一个例子:-

  Button1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //Some business logic
            Update_ui();
            if (!Player.isTuningnow) {
                Button1.setImageResource(R.drawable.btn_pause_pressed);
                Player.Paused = false;
                new CountDownTimer(600, 1) {

                    public void onTick(long millisUntilFinished) {

                    }

                    public void onFinish() {
                        Button1.setImageResource(R.drawable.music_btn_play);
                        //Some more business logic
                    }
                }.start();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多