java - NullPointerException on Button.findViewById() -
i followed tutorial create dialog in android studio. code shows no error in java file, says "unfortunately app has stopped working". don't know why.
my java file:
import android.app.alertdialog; import android.content.dialoginterface; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; public class mainactivity extends appcompatactivity { private static button b1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); onbutoonlistener(); } public void onbutoonlistener(){ b1=(button) b1.findviewbyid(r.id.button); b1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { alertdialog.builder ad = new alertdialog.builder(mainactivity.this); ad.setmessage("do want close").setcancelable(false).setpositivebutton("yes", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { finish(); } }).setnegativebutton("no", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { dialog.cancel(); } }); alertdialog ad1= ad.create(); ad1.settitle("alert!!"); ad1.show(); } }); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } }
my xml fie:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".mainactivity"> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="new button" android:id="@+id/button" android:layout_alignparenttop="true" android:layout_alignparentstart="true" android:layout_margintop="188dp" /> </relativelayout>
my logcat:
06-13 21:32:20.500 11336-11336/hilz.myapplication e/androidruntime﹕ fatal exception: main process: hilz.myapplication, pid: 11336 java.lang.runtimeexception: unable start activity componentinfo{hilz.myapplication/hilz.myapplication.mainactivity}: java.lang.nullpointerexception: attempt invoke virtual method 'android.view.view android.widget.button.findviewbyid(int)' on null object reference @ android.app.activitythread.performlaunchactivity(activitythread.java:2325) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2390) @ android.app.activitythread.access$800(activitythread.java:151) @ android.app.activitythread$h.handlemessage(activitythread.java:1303) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:135) @ android.app.activitythread.main(activitythread.java:5257) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698) caused by: java.lang.nullpointerexception: attempt invoke virtual method 'android.view.view android.widget.button.findviewbyid(int)' on null object reference @ hilz.myapplication.mainactivity.onbutoonlistener(mainactivity.java:23) @ hilz.myapplication.mainactivity.oncreate(mainactivity.java:20) @ android.app.activity.performcreate(activity.java:5990) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1106) @ android.app.activitythread.performlaunchactivity(activitythread.java:2278) at android.app.activitythread.handlelaunchactivity(activitythread.java:2390) at android.app.activitythread.access$800(activitythread.java:151) at android.app.activitythread$h.handlemessage(activitythread.java:1303) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:135) at android.app.activitythread.main(activitythread.java:5257) at java.lang.reflect.method.invoke(native method) at java.lang.reflect.method.invoke(method.java:372) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) at com.android.internal.os.zygoteinit.main(zygoteinit.java:698)
you invoking findviewbyid()
method in wrong way. should invoked on activity
itself, not on button
reference. replace
b1=(button) b1.findviewbyid(r.id.button);
with
b1=(button) findviewbyid(r.id.button);
the b1
reference null @ point, , reason nullpointerexception
.
Comments
Post a Comment