java - Strange null pointer exception in Android Studios -
so while coding, encountered logically unexplainable.
public class player { imageview playerimage; bitmap playerbmp; inputstream is; drawable drawable; public void draw(){ playactivity activity = new playactivity(); playerimage = (imageview) activity.findviewbyid(r.id.playerimage); = activity.getresources().openrawresource(+r.drawable.main_character_drawing); playerbmp = bitmapfactory.decodestream(is); drawable = new bitmapdrawable(activity.getresources(), playerbmp); playerimage.setimagedrawable(drawable); } }
and here playactivity class
public class playactivity extends activity { player player; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_play); player = new player(); player.draw(); } }
and xml activity_play
<imageview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/playerimage" android:layout_alignparenttop="true" android:layout_alignparentleft="true" android:layout_alignparentstart="true" android:layout_margintop="100dp" android:layout_marginleft="250dp"/>
however, when run player.draw(), null-pointer exception. here error log :
07-07 17:49:05.291 31892-31892/com.example.testgame.henry. e/androidruntime﹕ fatal exception: main java.lang.runtimeexception: unable start activity componentinfo{com.example.testgame.henry./com.example.testgame.henry.playactivity}: java.lang.nullpointerexception @ android.app.activitythread.performlaunchactivity(activitythread.java:2070) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2095) @ android.app.activitythread.access$600(activitythread.java:135) @ android.app.activitythread$h.handlemessage(activitythread.java:1201) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4849) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:795) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:562) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ android.app.activity.findviewbyid(activity.java:2045) @ com.example.testgame.henry.player.draw(player.java:36) @ com.example.testgame.henry.playactivity.oncreate(playactivity.java:26) @ android.app.activity.performcreate(activity.java:5244) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1082) @ android.app.activitythread.performlaunchactivity(activitythread.java:2034) at android.app.activitythread.handlelaunchactivity(activitythread.java:2095) at android.app.activitythread.access$600(activitythread.java:135) at android.app.activitythread$h.handlemessage(activitythread.java:1201) at android.os.handler.dispatchmessage(handler.java:99) at android.os.looper.loop(looper.java:137) at android.app.activitythread.main(activitythread.java:4849) at java.lang.reflect.method.invokenative(native method) at java.lang.reflect.method.invoke(method.java:511) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:795) at com.android.internal.os.zygoteinit.main(zygoteinit.java:562) at dalvik.system.nativestart.main(native method)
long made short, problem seems line of code :
playerimage = (imageview) activity.findviewbyid(r.id.playerimage);
is there sort of reason why causes null-pointer exception? i've found if replaced draw()
method draw(activity activity)
, , deleted line
playactivity activity = new playactivity();
and instead wrote player.draw(this)
(this
being playactivity), run fine.
no null-pointer exception, though solution found exact same thing creating instance of playactivity. cause this?
i don't understand why it's giving null-pointer exception when create , use instance of playactivity, yet doesn't when pass playactivity method , use parameter variable (which playactivity).
playactivity activity = new playactivity();
does not give existing instance of playactivity. gives something, if anything, without valid context. in order make work, need use proper instance of playactivity find view , inflate it. more or less describe in text.
Comments
Post a Comment