android - App always crashes when calling onClickListerner() -
app crashes when calling savedetails() function. don't know main reason. couldn't figure out. someone, please me.
when remove savedetails() function app launches , calls contact_details layout when imagebutton clicked. when function added app crashes. log shows error on savebutton.setonclicklistener().
package com.bikram.contacts; import android.database.cursor; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.button; import android.widget.edittext; import android.widget.imagebutton; import android.widget.listview; import android.widget.toast; import java.util.arraylist; public class mainactivity extends appcompatactivity { databasehelper databasehelper; edittext firstname, lastname, phonenumber; imagebutton imagebutton; button savebutton; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); databasehelper = new databasehelper(this); firstname = (edittext) findviewbyid(r.id.first_name); lastname = (edittext) findviewbyid(r.id.last_name); phonenumber = (edittext) findviewbyid(r.id.phone_number); imagebutton = (imagebutton) findviewbyid(r.id.imagebutton); savebutton = (button) findviewbyid(r.id.save_button); viewname(); addcontacts(); savedetails(); } public void savedetails() { savebutton.setonclicklistener( new view.onclicklistener() { @override public void onclick(view v) { } } ); } public void addcontacts() { imagebutton.setonclicklistener( new view.onclicklistener() { @override public void onclick(view v) { setcontentview(r.layout.contact_details); } } ); } public void viewname() { cursor result = databasehelper.getname(); arraylist arraylist = new arraylist(); while (result.movetonext()) { arraylist.add(result.getstring(0)); arraylist.add(result.getstring(1)); } arrayadapter arrayadapter = new arrayadapter(this, r.layout.text_view, arraylist); listview listview = (listview) findviewbyid(r.id.display_full_name); listview.setadapter(arrayadapter); } }
databasehelper.java
package com.bikram.contacts; import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; /** * created sabina on 13-nov-16. */ public class databasehelper extends sqliteopenhelper { public static final string databasename = "contact.db"; public static final string tablename = "contact_details"; public static final string col_1 = "first name"; public static final string col_2 = "last name"; public static final string col_3 = "mobile number"; public databasehelper(context context) { super(context, databasename, null, 4); } @override public void oncreate(sqlitedatabase db) { db.execsql("create table " + tablename + "(first name text, last name text, mobile number number not null primary key);"); } @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop table if exists" + tablename); oncreate(db); } public cursor getname() { sqlitedatabase db = this.getwritabledatabase(); string query = "select first name, last name " + tablename; cursor result = db.rawquery(query, null); return result; } public boolean addcontactdetails(string firstname, string lastname, string phonenumber){ sqlitedatabase db = this.getwritabledatabase(); contentvalues contentvalues = new contentvalues(); contentvalues.put(col_1, firstname); contentvalues.put(col_2, lastname); contentvalues.put(col_3, phonenumber); long result = db.insert(tablename, null, contentvalues); if(result == -1) return false; else return true; } }
log android monitor
11-13 18:27:49.343 2108-2108/com.bikram.contacts w/dalvikvm: threadid=1: thread exiting uncaught exception (group=0x41fd7ce0) 11-13 18:27:49.343 2108-2108/com.bikram.contacts w/dalvikvm: threadid=1: uncaught exception occurred 11-13 18:27:49.344 2108-2108/com.bikram.contacts w/system.err: java.lang.runtimeexception: unable start activity componentinfo{com.bikram.contacts/com.bikram.contacts.mainactivity}: java.lang.nullpointerexception 11-13 18:27:49.345 2108-2108/com.bikram.contacts w/system.err: @ android.app.activitythread.performlaunchactivity(activitythread.java:2347) 11-13 18:27:49.345 2108-2108/com.bikram.contacts w/system.err: @ android.app.activitythread.handlelaunchactivity(activitythread.java:2399) 11-13 18:27:49.345 2108-2108/com.bikram.contacts w/system.err: @ android.app.activitythread.access$800(activitythread.java:160) 11-13 18:27:49.345 2108-2108/com.bikram.contacts w/system.err: @ android.app.activitythread$h.handlemessage(activitythread.java:1330) 11-13 18:27:49.346 2108-2108/com.bikram.contacts w/system.err: @ android.os.handler.dispatchmessage(handler.java:110) 11-13 18:27:49.346 2108-2108/com.bikram.contacts w/system.err: @ android.os.looper.loop(looper.java:193) 11-13 18:27:49.346 2108-2108/com.bikram.contacts w/system.err: @ android.app.activitythread.main(activitythread.java:5330) 11-13 18:27:49.346 2108-2108/com.bikram.contacts w/system.err: @ java.lang.reflect.method.invokenative(native method) 11-13 18:27:49.346 2108-2108/com.bikram.contacts w/system.err: @ java.lang.reflect.method.invoke(method.java:515) 11-13 18:27:49.346 2108-2108/com.bikram.contacts w/system.err: @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:829) 11-13 18:27:49.347 2108-2108/com.bikram.contacts w/system.err: @ com.android.internal.os.zygoteinit.main(zygoteinit.java:645) 11-13 18:27:49.347 2108-2108/com.bikram.contacts w/system.err: @ dalvik.system.nativestart.main(native method) 11-13 18:27:49.347 2108-2108/com.bikram.contacts w/system.err: caused by: java.lang.nullpointerexception 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/system.err: @ com.bikram.contacts.mainactivity.savedetails(mainactivity.java:44) 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/system.err: @ com.bikram.contacts.mainactivity.oncreate(mainactivity.java:39) 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/system.err: @ android.app.activity.performcreate(activity.java:5264) 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/system.err: @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1088) 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/system.err: @ android.app.activitythread.performlaunchactivity(activitythread.java:2311) 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/system.err: ... 11 more 11-13 18:27:49.348 2108-2108/com.bikram.contacts w/dalvikvm: threadid=1: calling uncaughtexceptionhandler 11-13 18:27:49.350 2108-2108/com.bikram.contacts e/androidruntime: fatal exception: main process: com.bikram.contacts, pid: 2108 java.lang.runtimeexception: unable start activity componentinfo{com.bikram.contacts/com.bikram.contacts.mainactivity}: java.lang.nullpointerexception @ android.app.activitythread.performlaunchactivity(activitythread.java:2347) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2399) @ android.app.activitythread.access$800(activitythread.java:160) @ android.app.activitythread$h.handlemessage(activitythread.java:1330) @ android.os.handler.dispatchmessage(handler.java:110) @ android.os.looper.loop(looper.java:193) @ android.app.activitythread.main(activitythread.java:5330) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:829) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:645) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ com.bikram.contacts.mainactivity.savedetails(mainactivity.java:44) @ com.bikram.contacts.mainactivity.oncreate(mainactivity.java:39) @ android.app.activity.performcreate(activity.java:5264) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1088) @ android.app.activitythread.performlaunchactivity(activitythread.java:2311) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2399) @ android.app.activitythread.access$800(activitythread.java:160) @ android.app.activitythread$h.handlemessage(activitythread.java:1330) @ android.os.handler.dispatchmessage(handler.java:110) @ android.os.looper.loop(looper.java:193) @ android.app.activitythread.main(activitythread.java:5330) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:829) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:645) @ dalvik.system.nativestart.main(native method) 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: suspendall starting 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=1 status=7 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=11 status=7 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=10 status=7 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=9 status=7 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=8 status=4 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=7 status=4 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=6 status=4 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=4 status=8 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=3 status=8 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: threadid=2 status=8 sc=1 dc=0 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: suspendall complete : 1 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: resumeall starting 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: resumeall waking others 11-13 18:27:54.661 2108-2116/com.bikram.contacts d/dalvikvm: threadid=5: resumeall complete
activity_main.xml
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <listview android:id="@+id/display_full_name" android:layout_width="match_parent" android:layout_height="wrap_content" /> <imagebutton android:id="@+id/imagebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:layout_marginbottom="35dp" android:layout_marginright="25dp" android:padding="5dp" app:srccompat="@mipmap/add_button" /> </relativelayout>
contact_details.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <textview android:id="@+id/textview2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="new contact" /> <edittext android:id="@+id/first_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputtype="textpersonname" /> <edittext android:id="@+id/last_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputtype="textpersonname" /> <edittext android:id="@+id/phone_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputtype="phone" /> <button android:id="@+id/save_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:elevation="12dp" android:text="save" /> </linearlayout>
text_view.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id = "@+id/textview"/> </linearlayout>
you have include contact_details in activity_main.xml. reason has been explained @clownba0t above.
Comments
Post a Comment