2016-07-31 18 views
0

Ich bin neu in der Android-Programmierung. Ich habe eine App gemacht, wo ich Daten füllen kann und app diese Daten in der Tabelle anzeigen. Aber ich erhalte eine Fehlermeldung:Fehler: "Die Methode getText() muss vom UI-Thread aufgerufen werden, der aktuell abgeleitete Thread ist der Worker."

Method getText() must be called from the UI Thread, currently inferred thread is worker

in den folgenden Zeilen:

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

in diesem Code:

@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; 
    } 

Gewicht - Show-Nummer (27,6, 5,0)

txtDate - Datum anzeigen (20-09-2016, 12-03-1988)

txtTime - Show Zeit (15.16, 01.06)

Meine insert Methode:

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); 

} 

Antwort

1

Der Fehler ist ziemlich klar, denke ich. Sie müssen getText vom UI-Thread aufrufen, aber Sie sind nicht - Sie rufen es von doInBackground(), das in einem Worker-Thread ist. Das ist nicht erlaubt. Nur der UI-Thread kann auf UI-Elemente zugreifen.