Android – ViewRootImpl $ CalledFromWrongThreadException

Ich habe das benutzt, um BILDER AUS DEM INTERNET ANZEIGEN, aber es wirft einen Fehler wie unten:
Hallo ihr Lieben,

public class Order extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new DownloadFilesTask().execute(); } private class DownloadFilesTask extends AsyncTask<Void, Void, Void> { protected void onPostExecute(Void result) { } @Override protected Void doInBackground(Void... params) { setContentView(R.layout.order); ImageView imageView = (ImageView)findViewById(R.id.imgView); imageView.setImageDrawable(createDrawableFromURL("http://savagelook.com/misc/sl_drop2.png")); return null; } } private Drawable createDrawableFromURL(String urlString) { Drawable image = null; try { URL url = new URL(urlString); InputStream is = (InputStream)url.getContent(); image = Drawable.createFromStream(is, "src"); } catch (MalformedURLException e) { image = null; } catch (IOException e) { image = null; } return image; } } 

  • Warum können wir nicht einfach Arrays anstelle von varargs verwenden?
  • Android GPS ACCURACY_HIGH verursacht Kraft schließen?
  • Android USB isochrone Datenübertragung
  • Handschrifterkennung APIs für Android-Anwendungen
  • Ist es möglich, Android-Computer an den Drucker über Bluetooth anzuschließen?
  • Die Firebase-Abhängigkeit kann nicht aktualisiert werden (com.google.firebase)
  • Fehler in Android Studio 2.1 mit Java 8 bekommen
  • Automatisches Scrollen in ExpandableListView
  • Android volley JsonObjectRequest, die keinen Körper nur 200 zurückgibt
  • FileNotFoundException auf proguard-rules.pro Datei
  • Ändern Sie Android Drawable Button Icon Programmatisch
  • Fb app mit Empfehlungscode einladen
  • 3 Solutions collect form web for “Android – ViewRootImpl $ CalledFromWrongThreadException”

    Setzen Sie dies in onCreate()

     ImageView imageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.order); imageView = (ImageView)findViewById(R.id.imgView); new DownloadFilesTask().execute(); } 

    Und deine AsyncTask Klasse sollte so sein,

      private class DownloadFilesTask extends AsyncTask<Void, Void, Void> { Drawable drawable; @Override protected Void doInBackground(Void... params) { drawable = createDrawableFromURL( "http://savagelook.com/misc/sl_drop2.png"); return null; } protected void onPostExecute(Void result) { imageView.setImageDrawable(drawable); } } 

    Ich habe das gleiche Problem versucht, UI-Ansicht von c ++ mit JNI zu ändern. Die Lösung war Gebrauch

     runOnUiThread(new Runnable() { public void run(){ } }); 

    RunOnUiThread ist eine Aktivitätsmethode, also muss ich meine Aktivitätsinstanz öffentlich statisch machen, um meine öffentliche statische Methode anrufen zu können, die später von JNI anruft.

    Hoffe das hilft anderen 🙂

    PS: Von hier aus lerne ich, wie man JNI http://www.cocos2d-x.org/projects/cocos2d-x/wiki/How_to_use_jni für mein android Spiel benutzt, das vorher mit cocos2dx gemacht wurde

    Ich denke, diese Zeile verursacht den Fehler ..

      imageView.setImageDrawable(createDrawableFromURL("http://savagelook.com/misc/sl_drop2.png")); 

    Und der Fehler erklärt, warum es so ist.

      Only the original thread that created a view hierarchy can touch its views. 

    Dieser Fehler wird verursacht, weil Sie versuchen, die Benutzeroberfläche auf mainthread von einem anderen Thread zu ändern .. hier doInBackground in Ihrem Fall …

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.