Android – установите ImageView в URL

Я пытаюсь установить Imageview в URL.

Ниже мой код

protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.getpic); ImageView i = (ImageView)findViewById(R.id.ivget); URL url; try { url = new URL("http://0-media-cdn.foolz.us/ffuuka/board/sp/thumb/1359/41/1359419073599s.jpg"); Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); i.setImageBitmap(image); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Но всякий раз, когда я пытаюсь открыть / запустить приложение, он падает, почему он не работает?

 06-15 00:37:20.977: E/AndroidRuntime(8579): FATAL EXCEPTION: main 06-15 00:37:20.977: E/AndroidRuntime(8579): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.OptimusApps.stayhealthy/com.OptimusApps.stayhealthy.Practice2}: java.lang.NullPointerException 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1993) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.ActivityThread.access$600(ActivityThread.java:132) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.os.Handler.dispatchMessage(Handler.java:99) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.os.Looper.loop(Looper.java:137) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.ActivityThread.main(ActivityThread.java:4575) 06-15 00:37:20.977: E/AndroidRuntime(8579): at java.lang.reflect.Method.invokeNative(Native Method) 06-15 00:37:20.977: E/AndroidRuntime(8579): at java.lang.reflect.Method.invoke(Method.java:511) 06-15 00:37:20.977: E/AndroidRuntime(8579): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 06-15 00:37:20.977: E/AndroidRuntime(8579): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 06-15 00:37:20.977: E/AndroidRuntime(8579): at dalvik.system.NativeStart.main(Native Method) 06-15 00:37:20.977: E/AndroidRuntime(8579): Caused by: java.lang.NullPointerException 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.Activity.findViewById(Activity.java:1794) 06-15 00:37:20.977: E/AndroidRuntime(8579): at com.OptimusApps.stayhealthy.Practice2.<init>(Practice2.java:17) 06-15 00:37:20.977: E/AndroidRuntime(8579): at java.lang.Class.newInstanceImpl(Native Method) 06-15 00:37:20.977: E/AndroidRuntime(8579): at java.lang.Class.newInstance(Class.java:1319) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 06-15 00:37:20.977: E/AndroidRuntime(8579): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1984) 06-15 00:37:20.977: E/AndroidRuntime(8579): ... 11 more 

Выше – logcat, я не уверен, где ошибка в нем, но, скорее всего, …………………………… ………………………………………….. ………………………………………….. …………………….

Вы не должны выполнять сетевую работу по основной теме.

Вы можете findViewById текущего иерархического представления, установленного для активности. Проверьте, есть ли у вас изображение в ivget.xml. Также используйте asynctask, как показано ниже, и сделайте запрос получения http, чтобы получить изображение.

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="173dp" android:src="@drawable/ic_launcher" /> </RelativeLayout> 

MainActivity.java

  public class AndroidCustomGalleryActivity extends Activity { ImageView iv; Bitmap image ; ProgressDialog pd; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.imageView1); pd = new ProgressDialog(this); pd.setMessage("Loading.."); new TheTask().execute(); } class TheTask extends AsyncTask<Void,Void,Void> { @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); pd.show(); } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub try { //URL url = new URL( "http://a3.twimg.com/profile_images/670625317/aam-logo-v3-twitter.png"); image = downloadBitmap("http://a3.twimg.com/profile_images/670625317/aam-logo-v3-twitter.png"); } catch(Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); pd.dismiss(); if(image!=null) { iv.setImageBitmap(image); } } } private Bitmap downloadBitmap(String url) { // initilize the default HTTP client object final DefaultHttpClient client = new DefaultHttpClient(); //forming a HttoGet request final HttpGet getRequest = new HttpGet(url); try { HttpResponse response = client.execute(getRequest); //check 200 OK for success final int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url); return null; } final HttpEntity entity = response.getEntity(); if (entity != null) { InputStream inputStream = null; try { // getting contents from the stream inputStream = entity.getContent(); // decoding stream data back into image Bitmap that android understands image = BitmapFactory.decodeStream(inputStream); } finally { if (inputStream != null) { inputStream.close(); } entity.consumeContent(); } } } catch (Exception e) { // You Could provide a more explicit error message for IOException getRequest.abort(); Log.e("ImageDownloader", "Something went wrong while" + " retrieving bitmap from " + url + e.toString()); } return image; } } 

Введите описание изображения здесь

 android.app.Activity.findViewById(Activity.java:1794) 

=> В нем говорится, что вы не инициализировали свой ImageView, то есть «i» в своем коде.

 ImageView i = (ImageView) findViewById(R.id.myImageViewInXML);