i have file : language.txt in internal storage. tried reading file string , check string choose values database. can't understand why it's not working. dbdao class class managing databasehelpers.
this code:
public class dbdao { protected sqlitedatabase database; private databasehelper dbhelper; private databasehelper_fr dbhelper_fr; private context mcontext; public dbdao(context context) { this.mcontext = context; dbhelper = new databasehelper(mcontext); open(); } public void open() throws sqlexception { if(fileexists(mcontext, "language.txt")) { lang = main.readfile(); } else { main.writefile("english"); lang = "english"; } if (lang == "english") { if (dbhelper == null) dbhelper = new databasehelper(mcontext); database = dbhelper.getwritabledatabase(); } else if (lang == "france") { if (dbhelper_fr == null) dbhelper_fr = new databasehelper_fr(mcontext); database = dbhelper_fr.getwritabledatabase(); } } public boolean fileexists(context context, string filename) { file file = context.getfilestreampath(filename); if (file == null || !file.exists()) { return false; } return true; } // write text file public void writefile(string writestring) { // add-write text file try { fileoutputstream fileout = mcontext.openfileoutput("language.txt", mcontext.mode_private); outputstreamwriter outputwriter = new outputstreamwriter(fileout); outputwriter.write(writestring); outputwriter.close(); } catch (exception e) { e.printstacktrace(); } } // read text file public string readfile() { // reading text file string s = ""; try { fileinputstream filein = mcontext.openfileinput("language.txt"); inputstreamreader inputread = new inputstreamreader(filein); char[] inputbuffer = new char[100]; int charread; while ((charread = inputread.read(inputbuffer)) > 0) { // char string conversion string readstring = string .copyvalueof(inputbuffer, 0, charread); s += readstring; } inputread.close(); } catch (exception e) { e.printstacktrace(); } return s; } }
and results:
04-28 00:16:31.686: e/androidruntime(1400): java.lang.runtimeexception: unable start activity componentinfo{us.datn_02/us.datn_02.mainactivity}: java.lang.nullpointerexception 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activitythread.performlaunchactivity(activitythread.java:2184) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2233) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activitythread.access$800(activitythread.java:135) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activitythread$h.handlemessage(activitythread.java:1196) 04-28 00:16:31.686: e/androidruntime(1400): @ android.os.handler.dispatchmessage(handler.java:102) 04-28 00:16:31.686: e/androidruntime(1400): @ android.os.looper.loop(looper.java:136) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activitythread.main(activitythread.java:5001) 04-28 00:16:31.686: e/androidruntime(1400): @ java.lang.reflect.method.invokenative(native method) 04-28 00:16:31.686: e/androidruntime(1400): @ java.lang.reflect.method.invoke(method.java:515) 04-28 00:16:31.686: e/androidruntime(1400): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) 04-28 00:16:31.686: e/androidruntime(1400): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) 04-28 00:16:31.686: e/androidruntime(1400): @ dalvik.system.nativestart.main(native method) 04-28 00:16:31.686: e/androidruntime(1400): caused by: java.lang.nullpointerexception 04-28 00:16:31.686: e/androidruntime(1400): @ us.datn_02.db.cauhoidao.gettenchude(cauhoidao.java:257) 04-28 00:16:31.686: e/androidruntime(1400): @ us.datn_02.mainactivity.oncreate(mainactivity.java:57) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activity.performcreate(activity.java:5231) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087) 04-28 00:16:31.686: e/androidruntime(1400): @ android.app.activitythread.performlaunchactivity(activitythread.java:2148) 04-28 00:16:31.686: e/androidruntime(1400): ... 11 more
is wrong? can 1 me please? thanks.