2013-06-15 2 views
3

Я пытаюсь установить изображение в URL.Android - установить 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 

выше является логарифмом, я не уверен, где ошибка в нем конкретно, хотя .......................... .................................................. .................................................. ................................

+0

вы используете AsyncTask? отправить трассировку стека? – Raghunandan

+0

Включает ошибку logcat здесь – Rahul

+0

включает весь код, как один из представлений не инициализирован – Raghunandan

ответ

11

Не следует выполнять сетевую операцию по основной нити.

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

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

enter image description here

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

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

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

Я добавил, что к моему oncreate он все еще не работает – user222786

+0

@ user222786 где вы написали этот код для извлечения изображения из Интернета и настройки в ImageView? –

+0

проверить мой обновленный код, пожалуйста, – user222786

Смежные вопросы