我是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);
}
答案 0 :(得分:1)
我认为错误很明显。你必须从UI线程调用getText,但你不是 - 你是从doInBackground()调用它,它是在一个工作线程中。这是不允许的。只有UI线程才能访问UI元素。