java - Error opening trace file: No such file or directory(2) (1) no such table: ContactListTable Tried for hours can't find solution -
i new android , java. tried check code against example somehow application keeps forced close while example works well. need please! in advance!
new logcat
07-31 16:51:02.145: e/trace(16532): error opening trace file: no such file or directory (2) 07-31 16:51:02.175: d/androidruntime(16532): shutting down vm 07-31 16:51:02.180: w/dalvikvm(16532): threadid=1: thread exiting uncaught exception (group=0x40fdb2a0) 07-31 16:51:02.180: e/androidruntime(16532): fatal exception: main 07-31 16:51:02.180: e/androidruntime(16532): java.lang.runtimeexception: unable create application com.elson.projectversion.contactsactivityapplication: java.lang.nullpointerexception 07-31 16:51:02.180: e/androidruntime(16532): @ android.app.activitythread.handlebindapplication(activitythread.java:4254) 07-31 16:51:02.180: e/androidruntime(16532): @ android.app.activitythread.access$1400(activitythread.java:140) 07-31 16:51:02.180: e/androidruntime(16532): @ android.app.activitythread$h.handlemessage(activitythread.java:1297) 07-31 16:51:02.180: e/androidruntime(16532): @ android.os.handler.dispatchmessage(handler.java:99) 07-31 16:51:02.180: e/androidruntime(16532): @ android.os.looper.loop(looper.java:137) 07-31 16:51:02.180: e/androidruntime(16532): @ android.app.activitythread.main(activitythread.java:4921) 07-31 16:51:02.180: e/androidruntime(16532): @ java.lang.reflect.method.invokenative(native method) 07-31 16:51:02.180: e/androidruntime(16532): @ java.lang.reflect.method.invoke(method.java:511) 07-31 16:51:02.180: e/androidruntime(16532): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1038) 07-31 16:51:02.180: e/androidruntime(16532): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:805) 07-31 16:51:02.180: e/androidruntime(16532): @ dalvik.system.nativestart.main(native method) 07-31 16:51:02.180: e/androidruntime(16532): caused by: java.lang.nullpointerexception 07-31 16:51:02.180: e/androidruntime(16532): @ java.util.calendar.settime(calendar.java:1324) 07-31 16:51:02.180: e/androidruntime(16532): @ java.text.simpledateformat.formatimpl(simpledateformat.java:536) 07-31 16:51:02.180: e/androidruntime(16532): @ java.text.simpledateformat.format(simpledateformat.java:821) 07-31 16:51:02.180: e/androidruntime(16532): @ java.text.dateformat.format(dateformat.java:376) 07-31 16:51:02.180: e/androidruntime(16532): @ com.elson.projectversion.contacts.tostring(contacts.java:91) 07-31 16:51:02.180: e/androidruntime(16532): @ com.elson.projectversion.contactsactivityapplication.readcontactsfromdb(contactsactivityapplication.java:57) 07-31 16:51:02.180: e/androidruntime(16532): @ com.elson.projectversion.contactsactivityapplication.oncreate(contactsactivityapplication.java:26) 07-31 16:51:02.180: e/androidruntime(16532): @ android.app.instrumentation.callapplicationoncreate(instrumentation.java:1014) 07-31 16:51:02.180: e/androidruntime(16532): @ android.app.activitythread.handlebindapplication(activitythread.java:4251) 07-31 16:51:02.180: e/androidruntime(16532): ... 10 more
contacts.java
package com.elson.projectversion; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.database.sqlite.sqliteexception; import android.util.log; public class contacts implements comparable<contacts> { private long id; private string name; private int phone; private int email; private date date; private double runningaverage; public contacts(string name, int phone, date date) { this.name = name; this.phone = phone; this.date = date; } public contacts(long id, string name,int phone) { this.id=id; this.phone=phone; this.name= (name); } public long getid() { return id; } public void setid(long id) { this.id = id; } public int getphone() { return phone; } public void setphone(int phone) { this.phone = phone; } public string getname() { return name; } public void setname(string name) { this.name = name; } public date getdate() { return date; } public long getdateepoch(){ return date.gettime()/1000; } public void setdateepoch(long seconds){ date= new date (seconds*1000); } public void setdate(date date) { this.date = date; } public void setrunningaverage(double runningaverage) { this.runningaverage = runningaverage; } public boolean equals(object that){ contacts bs = (contacts) that; return this.date.equals(bs.date); } @override public string tostring() { string result; // "id" + id +" " dateformat df = dateformat.getdateinstance(dateformat.short); result = df.format(date) + "" + name + "" + phone ; return result; } @override public int compareto(contacts another) { // todo auto-generated method stub return 0; }
}
contactsactivityapplication
package com.elson.projectversion; import java.util.arraylist; import android.app.application; import android.content.contentvalues; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.util.log; import static com.elson.projectversion.mycontactsql.*; public class entercontactsactivity extends activity { private button savebutton; private edittext nameedittext; private edittext phoneedittext; private button exitbutton; private edittext emailedittext; private textview date; private int month;//private within class private int day; private int year; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_addcontacts); setupviews(); calendar calendar =calendar.getinstance(); year = calendar.get(calendar.year); month = calendar.get(calendar.month); day = calendar.get(calendar.day_of_month); date today = calendar.gettime(); dateformat df = dateformat.getdateinstance(dateformat.medium); string cs = df.format(today); date.settext(cs); } public void saveclickhandler(view v){ string contactsscore; contactsscore= nameedittext.gettext().tostring(); string name = string.format(contactsscore, null); contactsscore= phoneedittext.gettext().tostring(); int phone = integer.parseint(contactsscore); log.d("entercontacts" , "i hear save button"); if( isvalid(phone) ) { contacts contacts; date dateofgames= new gregoriancalendar(year,month,day).gettime(); contacts = new contacts (name , phone , dateofgames); contactsactivityapplication app = (contactsactivityapplication) getapplication(); //might wrong log.d("debugging", "app type: " + app.getclass().getname()); //need add function addbowlingscores app.addallcontacts(contacts); toast.maketext(getapplicationcontext(), "your contact has been saved!", toast.length_short).show(); } else{ //pop dialog data invalid alertdialog.builder builder = new alertdialog.builder(this); builder.settitle("invalid phone number") .setmessage("phone numbers cannot have more 8 numbers") .setcancelable(false) .setpositivebutton("ok", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub dialog.cancel(); } }); alertdialog alert = builder.create(); alert.show(); } } private boolean isvalid(int phone ) { if(phone > 0 && phone <100000000) return true; return false; // todo auto-generated method stub } public void handleshowhistoryclick (view v) { intent intent = new intent(this, historyactivity.class); startactivity(intent); } private void setupviews() { exitbutton = (button) findviewbyid(r.id.btnexit); savebutton =(button) findviewbyid(r.id.btnsave); nameedittext= (edittext) findviewbyid(r.id.nameedittext); phoneedittext= (edittext) findviewbyid(r.id.phoneedittext); emailedittext= (edittext) findviewbyid(r.id.emailedittext); date = (textview) findviewbyid(r.id.datetextview); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.addcontacts, menu); return true; }
}
entercontactsactivity
package com.elson.projectversion; import java.text.dateformat; import java.util.calendar; import java.util.date; import java.util.gregoriancalendar; import android.os.bundle; import android.app.activity; import android.app.alertdialog; import android.content.dialoginterface; import android.util.log; import android.view.menu; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; import android.widget.toast; public class entercontactsactivity extends activity { private button savebutton; private edittext nameedittext; private edittext phoneedittext; private button exitbutton; private edittext emailedittext; private textview date; private int month;//private within class private int day; private int year; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_addcontacts); setupviews(); calendar calendar =calendar.getinstance(); year = calendar.get(calendar.year); month = calendar.get(calendar.month); day = calendar.get(calendar.day_of_month); date today = calendar.gettime(); dateformat df = dateformat.getdateinstance(dateformat.medium); string cs = df.format(today); date.settext(cs); } public void saveclickhandler(view v){ string contactsscore; contactsscore= nameedittext.gettext().tostring(); int name = integer.parseint(contactsscore); contactsscore= phoneedittext.gettext().tostring(); int phone = integer.parseint(contactsscore); contactsscore = emailedittext.gettext().tostring(); int email = integer.parseint(contactsscore); log.d("entercontacts" , "i hear save button"); if( isvalid(name) && isvalid(phone) && isvalid(email) ) { contacts contacts; date dateofgames= new gregoriancalendar(year,month,day).gettime(); contacts = new contacts (name , phone , email, dateofgames); contactsactivityapplication app = (contactsactivityapplication) getapplication(); //might wrong log.d("debugging", "app type: " + app.getclass().getname()); //need add function addbowlingscores app.addallcontacts(contacts); toast.maketext(getapplicationcontext(), "your contact has been saved!", toast.length_short).show(); } else{ //pop dialog data invalid alertdialog.builder builder = new alertdialog.builder(this); builder.settitle("invalid phone number") .setmessage("phone numbers cannot have more 8 numbers") .setcancelable(false) .setpositivebutton("ok", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub dialog.cancel(); } }); alertdialog alert = builder.create(); alert.show(); } } private boolean isvalid(int phone) { if(phone <= 0 && phone >=100000000) return true; return false; // todo auto-generated method stub } private void setupviews() { exitbutton = (button) findviewbyid(r.id.btnexit); savebutton =(button) findviewbyid(r.id.btnsave); nameedittext= (edittext) findviewbyid(r.id.nameedittext); phoneedittext= (edittext) findviewbyid(r.id.phoneedittext); emailedittext= (edittext) findviewbyid(r.id.emailedittext); date = (textview) findviewbyid(r.id.datetextview); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.addcontacts, menu); return true; } }
mycontactssql
package com.elson.projectversion; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.database.sqlite.sqliteexception; import android.util.log;
public class mycontactsql extends sqliteopenhelper {
public static final string db_name ="mycontactsql.sqlite"; public static final int db_version = 1; public static string contact_list_table = "contactlisttable"; public static string record_id ="id"; public static string name = "name"; public static string phone_number="phonenumber"; public mycontactsql(context context) { super(context, db_name, null, db_version); } @override public void oncreate(sqlitedatabase contactlistdb) { string sqlstatement = "create table " + contact_list_table + " (" + record_id + " integer primary key autoincrement not null," + name + " long," + phone_number +" integer" +");"; log.d("contact database", sqlstatement); contactlistdb.execsql(sqlstatement); } @override public void onupgrade(sqlitedatabase arg0, int arg1, int arg2) { }
}
historyactivity
import java.util.arraylist; import android.app.alertdialog; import android.app.listactivity; import android.content.dialoginterface; import android.os.bundle; import android.util.log; import android.view.view; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.listview; public class historyactivity extends listactivity { bundle savedinstancestate; private arraylist <contacts> allcontacts; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); this.savedinstancestate = savedinstancestate; setcontentview(r.layout.history_layout); //get data app contactsactivityapplication app = (contactsactivityapplication) getapplication(); allcontacts = app.getallcontacts(); //view --- adapter ------ data setlistadapter( new arrayadapter<contacts> (this, r.layout.history_row, allcontacts )); listview listview = this.getlistview(); listview.setonitemclicklistener( new onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { verifydeleterow(position); log.d("debug", "i hear item selected:" + position); // todo auto-generated method stub } } ); } private void verifydeleterow(final int position){ //pop dialog confirm delete row alertdialog.builder builder = new alertdialog.builder(this); builder.settitle("delete series?") .setmessage("do want delete data?" + allcontacts.get(position)) .setcancelable(false) .setnegativebutton("no! leave there!", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // todo auto-generated method stub dialog.cancel(); } }) .setpositivebutton("delete", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { contacts todelete = allcontacts.get(position); contactsactivityapplication app = (contactsactivityapplication) getapplication(); app.deletebowlingscores(todelete); // todo auto-generated method stub oncreate(savedinstancestate); } }); alertdialog alert = builder.create(); alert.show(); } }
in sqlhelper class have created database "db_name" in quotes. means dbname db_name.
super(context, "db_name", null, db_version);
do this
super(context, db_name, null, db_version);
hope helps!!
Comments
Post a Comment