java - Storing a spinner item in a string value -
i have created app connected remote database. items in database displayed through spinner in mainactivity class. want display selected item in separate class(map.java) , xml page(map.xml), used code in map.java try selected item , display it:
spinner myspinner = (spinner)findviewbyid(r.id.spinfood); string text = myspinner.getselecteditem().tostring(); edittext e = (edittext) findviewbyid (r.id.edittext1); e.settext(text);
to display value created edittext in map.xml file:
<edittext android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputtype="text" android:text="@string/text" android:id="@+id/edittext1" android:layout_alignbottom="@+id/textview" android:layout_torightof="@+id/textview" android:layout_alignright="@+id/imageview" android:layout_alignend="@+id/imageview" />
the android:input_type="text"
string value created:
<string name="text"> %s </string>
but whenever open map page app crashes. please tell me going wrong? here of code mainactivity , map.java
mainactivity
package com.example.cillin.infoandroidhivespinnermysql; import java.util.arraylist; .. public class mainactivity extends activity implements onitemselectedlistener { private button btnaddnewcategory; private textview txtcategory; public spinner spinnerfood; // array list spinner adapter private arraylist<category> categorieslist; progressdialog pdialog; // api urls // url create new category private string url_new_category = "http://192.168.1.4/food_api/new_category.php"; // url categories private string url_categories = "http://192.168.1.4/food_api/get_categories.php"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); btnaddnewcategory = (button) findviewbyid(r.id.btnaddnewcategory); spinnerfood = (spinner) findviewbyid(r.id.spinfood); txtcategory = (textview) findviewbyid(r.id.txtcategory); categorieslist = new arraylist<category>(); // spinner item select listener spinnerfood.setonitemselectedlistener(this); // add new category click event btnaddnewcategory.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if (txtcategory.gettext().tostring().trim().length() > 0) { // new category name string newcategory = txtcategory.gettext().tostring(); // call async task create new category new addnewcategory().execute(newcategory); } else { toast.maketext(getapplicationcontext(), "please enter category name", toast.length_short) .show(); } } }); new getcategories().execute(); } /** * adding spinner data * */ private void populatespinner() { list<string> lables = new arraylist<string>(); txtcategory.settext(""); (int = 0; < categorieslist.size(); i++) { lables.add(categorieslist.get(i).getname()); } // creating adapter spinner arrayadapter<string> spinneradapter = new arrayadapter<string>(this, android.r.layout.simple_spinner_item, lables); // drop down layout style - list view radio button spinneradapter .setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); // attaching data adapter spinner spinnerfood.setadapter(spinneradapter); //spinnervalue = spinnerfood.getselecteditem().tostring(); } /** * async task food categories * */ private class getcategories extends asynctask<void, void, void> { @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(mainactivity.this); pdialog.setmessage("fetching food categories.."); pdialog.setcancelable(false); pdialog.show(); } @override protected void doinbackground(void... arg0) { servicehandler jsonparser = new servicehandler(); string json = jsonparser.makeservicecall(url_categories, servicehandler.get); log.e("response: ", "> " + json); if (json != null) { try { jsonobject jsonobj = new jsonobject(json); if (jsonobj != null) { jsonarray categories = jsonobj .getjsonarray("categories"); (int = 0; < categories.length(); i++) { jsonobject catobj = (jsonobject) categories.get(i); category cat = new category(catobj.getint("id"), catobj.getstring("name")); categorieslist.add(cat); } } } catch (jsonexception e) { e.printstacktrace(); } } else { log.e("json data", "didn't receive data server!"); } return null; } @override protected void onpostexecute(void result) { super.onpostexecute(result); if (pdialog.isshowing()) pdialog.dismiss(); populatespinner(); } } /** * async task create new food category * */ private class addnewcategory extends asynctask<string, void, void> { boolean isnewcategorycreated = false; @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(mainactivity.this); pdialog.setmessage("creating new category.."); pdialog.setcancelable(false); pdialog.show(); } @override protected void doinbackground(string... arg) { string newcategory = arg[0]; // preparing post params list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("name", newcategory)); servicehandler serviceclient = new servicehandler(); string json = serviceclient.makeservicecall(url_new_category, servicehandler.post, params); log.d("create response: ", "> " + json); if (json != null) { try { jsonobject jsonobj = new jsonobject(json); boolean error = jsonobj.getboolean("error"); // checking error node in json if (!error) { // new category created isnewcategorycreated = true; } else { log.e("create category error: ", "> " + jsonobj.getstring("message")); } } catch (jsonexception e) { e.printstacktrace(); } } else { log.e("json data", "didn't receive data server!"); } return null; } @override protected void onpostexecute(void result) { super.onpostexecute(result); if (pdialog.isshowing()) pdialog.dismiss(); if (isnewcategorycreated) { runonuithread(new runnable() { @override public void run() { // fetching categories new getcategories().execute(); } }); } } } @override public void onitemselected(adapterview<?> parent, view view, int position, long id) { toast.maketext( getapplicationcontext(), parent.getitematposition(position).tostring() + " selected" , toast.length_long).show(); } @override public void onnothingselected(adapterview<?> arg0) { }
}
map.java
package com.example.cillin.infoandroidhivespinnermysql; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.imageview; import android.widget.spinner; import android.widget.textview;
public class map extends activity {
public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //this page layout located in menu xml file //setcontentview links java file, xml file layout setcontentview(r.layout.map); /*textview.settext(spinnervalue); textview spinv = (textview)findviewbyid(r.id.textview2); spinv.settext(getspin()); spinv = getspin();*/ spinner myspinner = (spinner)findviewbyid(r.id.spinfood); string text = myspinner.getselecteditem().tostring(); edittext e = (edittext) findviewbyid (r.id.edittext1); e.settext(text); button mainm = (button)findviewbyid(r.id.mainmenu); mainm.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //this button linked map page intent = new intent(map.this, mainmenu.class); //activating intent startactivity(i); } }); } }
any appreciated!!
here errors in logcat when crashes:
e/databaseutils﹕ writing exception parcel java.lang.securityexception: permission denial: get/set setting user asks run user -2 calling user 0; requires android.permission.interact_across_users_full @ com.android.server.am.activitymanagerservice.handleincominguser(activitymanagerservice.java:14643) @ android.app.activitymanager.handleincominguser(activitymanager.java:2469) @ com.android.providers.settings.settingsprovider.call(settingsprovider.java:688) @ android.content.contentprovider$transport.call(contentprovider.java:325) @ android.content.contentprovidernative.ontransact(contentprovidernative.java:275) @ android.os.binder.exectransact(binder.java:404) e/androidruntime﹕ fatal exception: main process: com.example.cillin.infoandroidhivespinnermysql, pid: 14691 java.lang.runtimeexception: unable start activity componentinfo{com.example.cillin.infoandroidhivespinnermysql/com.example.cillin.infoandroidhivespinnermysql.map}: java.lang.nullpointerexception @ android.app.activitythread.performlaunchactivity(activitythread.java:2305) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2363) @ android.app.activitythread.access$900(activitythread.java:161) @ android.app.activitythread$h.handlemessage(activitythread.java:1265) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:157) @ android.app.activitythread.main(activitythread.java:5356) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1265) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1081) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ com.example.cillin.infoandroidhivespinnermysql.map.oncreate(map.java:34) @ android.app.activity.performcreate(activity.java:5426) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1105) @ android.app.activitythread.performlaunchactivity(activitythread.java:2269) at android.app.activitythread.handlelaunchactivity(activitythread.java:2363) at android.app.activitythread.access$900(activitythread.java:161) at android.app.activitythread$h.handlemessage(activitythread.java:1265) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:157) at android.app.activitythread.main(activitythread.java:5356) at java.lang.reflect.method.invokenative(native method) at java.lang.reflect.method.invoke(method.java:515) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1265) at com.android.internal.os.zygoteinit.main(zygoteinit.java:1081) at dalvik.system.nativestart.main(native method)
i'm guessing you're getting nullpointerexception in map.class
spinner myspinner = (spinner)findviewbyid(r.id.spinfood); string text = myspinner.getselecteditem().tostring(); edittext e = (edittext) findviewbyid (r.id.edittext1); e.settext(text);
you reference spinner, try selected item , convert item string. far can tell haven't added items spinner. guess trying access object in spinner , since doesn't exist returns null. try call method on null object , npe.
this guess. stacktrace helpful in trying diagnose this.
where think you're going wrong populate spinner in mainactivity , expect able select item spinner different activity. isn't how works. map.class won't able reference in mainactivity.class. try passing object mainactivity.class map.class or use different method of passing data, trying reference data in mainacitivity.class map.class won't work.
edit: if want pass string mainactivity.class map.class can add string 'extra' intent use start map.class.
in mainactivity.class code. when item spinner selected, create intent , set string using putextra() method. need supply key tags can identify in receiving activity , string want send.
intent intent = new intent(this, map.class); intent.putextra("key_spinner_string", variablerepresentingstring); startactivity(intent);
in map.class activity, in oncreate() method need receive intent, check extra, unpack extra. have string.
oncreate(bundle savedinstancestate) { string spinnerstring; if (getintent() != null && getintent().getextras() != null) { bundle bundle = getintent().getextras(); if (bundle.getstring("key_spinner_string") != null) { spinnerstring = bundle.getstring("key_spinner_string"); } } }
if done correctly string passed mainactivity.class , received map.class
Comments
Post a Comment