title: android - Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/10118301/android-viewrootimplcalledfromwrongthreadexception">Android - ViewRootImpl$CalledFromWrongThreadException</a>  </p>
  </blockquote>
  
  
  
  <p>Im trying to get image from my URL and display in application but it throw error <strong>Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views</strong>. Below is my code</p>
  
  <p>Code</p>
  
  <pre><code>package com.smartag.bird.dev;
  
  public class MainActivity extends Activity {
      static String ndefMsg = null;
      static String ndefMsg1 = null;
      NfcAdapter mNfcAdapter;
      PendingIntent mNfcPendingIntent;
      IntentFilter[] mNdefExchangeFilters;
      static final String TAG = "Read Tag";
      TextView mTitle;
      private static ImageView imageView;
      static String url = "http://sposter.smartag.my/images/chicken_soup.jpg";
      private static Bitmap downloadBitmap;
      private static BitmapDrawable bitmapDrawable;
      private static boolean largerImg = false;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);            
          //setContentView(R.layout.main);
          mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
          mNfcPendingIntent = PendingIntent.getActivity(this, 0,
                  new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
          IntentFilter ndefDetected = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
          try {
              ndefDetected.addDataType("text/plain");
          } catch (MalformedMimeTypeException e) { }
          mNdefExchangeFilters = new IntentFilter[] { ndefDetected };  
          if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
              NdefMessage[] messages = getNdefMessages(getIntent());
              byte[] payload = messages[0].getRecords()[0].getPayload();
              ndefMsg = new String(payload);           
              setIntent(new Intent()); // Consume this intent.
          }
  
          ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
          NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  
          if(ndefMsg == null || ndefMsg.length() == 0)
          {               
              startActivity(new Intent(MainActivity.this, MainMenu.class));               
          }            
          else
          {
              setContentView(R.layout.main);
              if (mWifi.isConnected()) {              
                  ndefMsg1 = ndefMsg;
                   new DownloadFilesTask().execute(); 
                    ndefMsg = null;
              }
              else
              {                        
                  AlertDialog.Builder dialog = new AlertDialog.Builder(this);
                  dialog.setTitle("Attention");
                  dialog.setMessage("No Internet Connection. Please enable the wifi.");
                  dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int whichButton) 
                      {
                      }
                  });
                  dialog.show();
              }
          }           
      }
      private class DownloadFilesTask extends AsyncTask&lt;Void, Void, Void&gt; {
          protected void onPostExecute(Void result) {             
          }           
          @Override
          protected Void doInBackground(Void... params) {             
              try {
                  URL myFileUrl = new URL("http://sposter.smartag.my/images/chicken_soup.jpg");
                  HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
                  conn.setDoInput(true);
                  conn.connect();
                  InputStream is = conn.getInputStream();
                  downloadBitmap = BitmapFactory.decodeStream(is);
                              } catch (FileNotFoundException e) {             
                  e.printStackTrace();
              }
              catch (IOException e) {         
                  e.printStackTrace();
              }               
              ImageView image = (ImageView) findViewById(R.id.imview);            
              image.setImageBitmap(downloadBitmap);
              return null;
          }
      }
  }
  </code></pre>