错误:“必须从UI线程调用方法getText(),当前推断的线程是worker。”

时间:2016-07-31 21:59:44

标签: java android sqlite methods android-edittext

我是android编程的新手。我已经制作了一个应用程序,我可以填写数据和应用程序在表中显示此数据。但是我收到了一个错误:

  

必须从当前推断的UI线程调用方法getText()   线程是工作者

以下几行:

  

weight.getText()   txtDate.getText()   txtTime.getText()

在此代码中:

@Override
    protected Void doInBackground(Void... params) {

        String w_value = weight.getText().toString();
        String wdate = txtDate.getText().toString();
        String wtime = txtTime.getText().toString();

        // inserting data
        sqlcon.open();
        sqlcon.insertData(w_value, wdate, wtime);
        BuildTable();
        return null;
    }

体重 - 显示数字(27.6,5,0)

txtDate - 显示日期(20-09-2016,12-03-1988)

txtTime - 显示时间(15:16,1:06)

我的insertData方法:

public void insertData(String weight, String date) {

   ContentValues cv = new ContentValues();
   cv.put(MyDbHelper.WEIGHT, weight);
   cv.put(MyDbHelper.WEIGHT_DATE, String.valueOf(date));
   cv.put(MyDbHelper.WEIGHT_TIME, new SimpleDateFormat("HH:mm").format(new Date()));
   database.insert(MyDbHelper.TABLE_WEIGHT, null, cv);

}

1 个答案:

答案 0 :(得分:1)

我认为错误很明显。你必须从UI线程调用getText,但你不是 - 你是从doInBackground()调用它,它是在一个工作线程中。这是不允许的。只有UI线程才能访问UI元素。