I am trying to set an Imageview to a URL.
Below is my code
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();
}
}
But whenever I try to open/run the app it crashes, why isnt it working?
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
above is the logcat, I am not sure where the error is in it specificaly though..............................................................................................................................................................
=> It says you haven't initialized your ImageView i.e. "i" in your code.
Use Glide
Implementation
'com.github.bumptech.glide:glide:4.2.0'
Or
in java
You should not do network related operation on the main ui thread.
You can findViewById of the current view hierachy set to the activity. check if you have imageview in ivget.xml. Also use a asynctask as below and make a http get request to get the image.
activity_main.xml
MainActivity.java