Android UI änderung aus AsyncTask

BigRavler

Mitglied
Guten Tag,

ich als Einsteiger bin momentan gerade dabei eine App zu programmieren Welche im Grunde eine SQLite Datei von einem SFTP Server downloadet und, diese Ausließt und vorerst einen String in einem Textview ausgibt.

Für diesen Prozedur habe ich mir eine neue Klasse erstellt (update.java) in welcher dann mittels AsyncTask der Download im Hintergrund ausgeführt wird.
Nun möchte ich im onPostExecute Void Die Sqlite Datenbank auslesen und den String in einem TextView ausgeben.

Java:
    protected void onPostExecute(Void aVoid) {
        SQLiteDatabase mydatabase = SQLiteDatabase.openOrCreateDatabase(mContext.getFilesDir()+ "/test23.db", null);
        Cursor resultSet = mydatabase.rawQuery("SELECT * FROM Matches WHERE Datum >= CURRENT_TIMESTAMP ORDER BY Datum LIMIT 1",null);
        resultSet.moveToFirst();
        String s1 = resultSet.getString(0);
        String s2 = resultSet.getString(2);

        TextView textView = (TextView) findViewById(R.id.textView6);
        textView.setText(s1);
    }
dabei erhalte ich Folgenden Fehler:
Code:
Error:(107, 40) error: cannot find symbol method findViewById(int)

Ich habe dieses Problem auch schon mehrfach gegoogelt und dazu auch einige Lösungsansätze gefunden, allerdings kam ich mit keinem zum gewünschtem Ergebniss.

Grüße BigRavler
 

dzim

Top Contributor
Erster Fehler: DB-Operation auf dem UI-Thread. Lediglich die #doInBackground-Methode wird auf einem anderen Thread ausgeführt. Alle Methoden ausser die genannte laufen auf dem UI-Thread.

Verstehe ich richtig, dass dein AsyncTask eine in die Update.java gekapselte Klasse ist? Wovon erbt Update.java? Ein #findViewById macht nur sinn, wenn du in einem Fragment (via .getView().findViewById(...)) oder es sich dabei um eine Activity handelt. Wenn es eine Reine Hilfsklasse ist, wird sie natürlich die Methode #findViewById nicht besitzen...
 

Ähnliche Java Themen

Neue Themen


Oben