android - setOnItemSelectedListener : application stops working -
i'm new android , , i'm trying make edittext visible while selecting item ,the code seems fine , emulator stops working anytime run application , click on button accesses activity .here code :
import java.util.locale; import android.app.actionbar; import android.app.fragmenttransaction; import android.content.intent; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentactivity; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.app.navutils; import android.support.v4.view.viewpager; import android.view.gravity; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.view.view.onclicklistener; import android.widget.adapterview; import android.widget.adapterview.onitemselectedlistener; import android.widget.button; import android.widget.edittext; import android.widget.spinner; import android.widget.textview; import android.widget.toast; public class manageactivity extends fragmentactivity implements actionbar.tablistener { /** * {@link android.support.v4.view.pageradapter} provide * fragments each of sections. use * {@link android.support.v4.app.fragmentpageradapter} derivative, * keep every loaded fragment in memory. if becomes memory * intensive, may best switch * {@link android.support.v4.app.fragmentstatepageradapter}. */ sectionspageradapter msectionspageradapter; /** * {@link viewpager} host section contents. */ viewpager mviewpager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_manage); // set action bar. final actionbar actionbar = getactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_tabs); // create adapter return fragment each of 3 // primary sections of app. msectionspageradapter = new sectionspageradapter( getsupportfragmentmanager()); // set viewpager sections adapter. mviewpager = (viewpager) findviewbyid(r.id.pager); mviewpager.setadapter(msectionspageradapter); // when swiping between different sections, select corresponding // tab. can use actionbar.tab#select() if have // reference tab. mviewpager .setonpagechangelistener(new viewpager.simpleonpagechangelistener() { @override public void onpageselected(int position) { actionbar.setselectednavigationitem(position); } }); // each of sections in app, add tab action bar. (int = 0; < msectionspageradapter.getcount(); i++) { // create tab text corresponding page title defined // adapter. specify activity object, implements // tablistener interface, callback (listener) when // tab selected. actionbar.addtab(actionbar.newtab() .settext(msectionspageradapter.getpagetitle(i)) .settablistener(this)); } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.manage, menu); return true; } @override public void ontabselected(actionbar.tab tab, fragmenttransaction fragmenttransaction) { // when given tab selected, switch corresponding page in // viewpager. mviewpager.setcurrentitem(tab.getposition()); } @override public void ontabunselected(actionbar.tab tab, fragmenttransaction fragmenttransaction) { } @override public void ontabreselected(actionbar.tab tab, fragmenttransaction fragmenttransaction) { } /** * {@link fragmentpageradapter} returns fragment corresponding * 1 of sections/tabs/pages. */ public class sectionspageradapter extends fragmentpageradapter { public sectionspageradapter(fragmentmanager fm) { super(fm); } @override public fragment getitem(int position) { // getitem called instantiate fragment given page. // return newcasefragment (defined static inner class // below) page number lone argument. if(position == 0){ fragment fragment = new newcasefragment(); //bundle args = new bundle(); //args.putint(newcasefragment.arg_section_number, position + 1); //fragment.setarguments(args); return fragment; } else{ fragment fragment = new updatefragment(); return fragment; } } @override public int getcount() { // show 3 total pages. return 3; } @override public charsequence getpagetitle(int position) { locale l = locale.getdefault(); switch (position) { case 0: return getstring(r.string.title_section1).touppercase(l); case 1: return getstring(r.string.title_section2).touppercase(l); case 2: return getstring(r.string.title_section3).touppercase(l); } return null; } } /** * fragment representing section of app */ public static class newcasefragment extends fragment implements onitemselectedlistener{ public newcasefragment() { } button members ; edittext orgname , orgaddress; //spinner spinner1; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.newcase, container, false); button members = (button)getactivity(). findviewbyid(r.id.members); edittext orgname = (edittext)getactivity(). findviewbyid(r.id.orgname); edittext orgaddress = (edittext)getactivity(). findviewbyid(r.id.orgaddress); spinner spinner1 = (spinner)getactivity(). findviewbyid(r.id.spinner1); spinner1.setonitemselectedlistener(this); //members.setonclicklistener(memberslistener); return rootview; } public void onitemselected(adapterview<?> spinner1, view view,int pos, long id) { orgname.setvisibility(view.visible); orgaddress.setvisibility(view.visible); } @override public void onnothingselected(adapterview<?> arg0) { // todo auto-generated method stub } } /******* * */ public static class updatefragment extends fragment { public updatefragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.updatecase, container, false); return rootview; } } }
the layout :
<scrollview xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scroller" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillviewport="true" > <linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.01" android:orientation="horizontal" android:padding="10dp" > <edittext android:id="@+id/casename" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.0" android:ems="10" android:hint="@string/casename" android:inputtype="text" android:textsize="12sp" > <requestfocus /> </edittext> </linearlayout> <spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/organisation" android:prompt="@string/infoorg" /> <!-- layout organisation information --> <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.01" android:orientation="horizontal" android:padding="10dp" > <edittext android:id="@+id/orgname" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.0" android:hint="@string/orgname" android:inputtype="text" android:textsize="12sp" android:visibility="gone" /> </linearlayout> <linearlayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.01" android:orientation="horizontal" android:padding="10dp" > <edittext android:id="@+id/orgaddress" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.0" android:hint="@string/orgaddress" android:inputtype="text" android:textsize="12sp" android:visibility="gone" /> </linearlayout> <relativelayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.01" android:orientation="horizontal" android:padding="10dp" > <textview android:id="@+id/staff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:clickable="true" android:hint="@string/staff" android:textsize="14sp" android:layout_margin="10dp" android:textstyle="bold" /> <button android:id="@+id/members" style="@style/btnstylegrey" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableleft="@drawable/users2" android:text="@string/plus" android:layout_torightof="@+id/staff" /> </relativelayout> <button android:id="@+id/submit" style="@style/btnstyleblue" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="@string/submit" /> </linearlayout> </scrollview>
here log :
05-09 18:01:44.684: e/androidruntime(1480): fatal exception: main 05-09 18:01:44.684: e/androidruntime(1480): java.lang.nullpointerexception 05-09 18:01:44.684: e/androidruntime(1480): @ com.pfe.risu.manageactivity$newcasefragment.oncreateview(manageactivity.java:195) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.fragment.performcreateview(fragment.java:1460) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:911) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1088) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.backstackrecord.run(backstackrecord.java:682) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1444) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.fragmentmanagerimpl.executependingtransactions(fragmentmanager.java:461) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.app.fragmentpageradapter.finishupdate(fragmentpageradapter.java:141) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.view.viewpager.populate(viewpager.java:1011) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.view.viewpager.populate(viewpager.java:880) 05-09 18:01:44.684: e/androidruntime(1480): @ android.support.v4.view.viewpager.onmeasure(viewpager.java:1374) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.view.measure(view.java:12603) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4677) 05-09 18:01:44.684: e/androidruntime(1480): @ android.widget.framelayout.onmeasure(framelayout.java:293) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.view.measure(view.java:12603) 05-09 18:01:44.684: e/androidruntime(1480): @ android.widget.linearlayout.measurevertical(linearlayout.java:812) 05-09 18:01:44.684: e/androidruntime(1480): @ android.widget.linearlayout.onmeasure(linearlayout.java:553) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.view.measure(view.java:12603) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:4677) 05-09 18:01:44.684: e/androidruntime(1480): @ android.widget.framelayout.onmeasure(framelayout.java:293) 05-09 18:01:44.684: e/androidruntime(1480): @ com.android.internal.policy.impl.phonewindow$decorview.onmeasure(phonewindow.java:2072) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.view.measure(view.java:12603) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1044) 05-09 18:01:44.684: e/androidruntime(1480): @ android.view.viewrootimpl.handlemessage(viewrootimpl.java:2418) 05-09 18:01:44.684: e/androidruntime(1480): @ android.os.handler.dispatchmessage(handler.java:99) 05-09 18:01:44.684: e/androidruntime(1480): @ android.os.looper.loop(looper.java:137) 05-09 18:01:44.684: e/androidruntime(1480): @ android.app.activitythread.main(activitythread.java:4340) 05-09 18:01:44.684: e/androidruntime(1480): @ java.lang.reflect.method.invokenative(native method) 05-09 18:01:44.684: e/androidruntime(1480): @ java.lang.reflect.method.invoke(method.java:511) 05-09 18:01:44.684: e/androidruntime(1480): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) 05-09 18:01:44.684: e/androidruntime(1480): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) 05-09 18:01:44.684: e/androidruntime(1480): @ dalvik.system.nativestart.main(native method)
to solve second problem :
now null pointer exception on these lines :
orgname.setvisibility(view.visible); orgaddress.setvisibility(view.visible);
i initialised variable inside onitemselected method :
public void onitemselected(adapterview<?> spinner1, view view,int pos, long id) { edittext orgname = (edittext)getactivity().findviewbyid(r.id.orgname); edittext orgaddress = (edittext)getactivity().findviewbyid(r.id.orgaddress); orgname.setvisibility(view.visible); orgaddress.setvisibility(view.visible); }
i'm getting no exceptions on itemselectedlistner doesn't seem working , , edittexts visible :(
after replacing
edittext orgname = (edittext)getactivity(). findviewbyid(r.id.orgname); edittext orgaddress = (edittext)getactivity(). findviewbyid(r.id.orgaddress);
with
edittext orgname = (edittext)view.findviewbyid(r.id.orgname); edittext orgaddress = (edittext)view.findviewbyid(r.id.orgaddress);
manageactivity shows edittexts invisible , application stops again . here log :
05-09 20:58:24.401: e/androidruntime(581): fatal exception: main 05-09 20:58:24.401: e/androidruntime(581): java.lang.nullpointerexception 05-09 20:58:24.401: e/androidruntime(581): @ com.pfe.risu.manageactivity$newcasefragment.onitemselected(manageactivity.java:208) 05-09 20:58:24.401: e/androidruntime(581): @ android.widget.adapterview.fireonselected(adapterview.java:882) 05-09 20:58:24.401: e/androidruntime(581): @ android.widget.adapterview.access$200(adapterview.java:48) 05-09 20:58:24.401: e/androidruntime(581): @ android.widget.adapterview$selectionnotifier.run(adapterview.java:848) 05-09 20:58:24.401: e/androidruntime(581): @ android.os.handler.handlecallback(handler.java:605) 05-09 20:58:24.401: e/androidruntime(581): @ android.os.handler.dispatchmessage(handler.java:92) 05-09 20:58:24.401: e/androidruntime(581): @ android.os.looper.loop(looper.java:137) 05-09 20:58:24.401: e/androidruntime(581): @ android.app.activitythread.main(activitythread.java:4340) 05-09 20:58:24.401: e/androidruntime(581): @ java.lang.reflect.method.invokenative(native method) 05-09 20:58:24.401: e/androidruntime(581): @ java.lang.reflect.method.invoke(method.java:511) 05-09 20:58:24.401: e/androidruntime(581): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) 05-09 20:58:24.401: e/androidruntime(581): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) 05-09 20:58:24.401: e/androidruntime(581): @ dalvik.system.nativestart.main(native method)
and here line 208 :
orgname.setvisibility(view.visible);
you forgot initialize variables
edittext orgname; edittext orgaddress; button members;
so when you're doing
members.setonclicklistener(memberslistener); orgname.setvisibility(view.visible); orgaddress.setvisibility(view.visible);
a nullpointerexception
thrown , app stops
edit :
you have variable view
inflated :
replace :
button members = (button)getactivity(). findviewbyid(r.id.members); edittext orgname = (edittext)getactivity(). findviewbyid(r.id.orgname); edittext orgaddress = (edittext)getactivity(). findviewbyid(r.id.orgaddress); spinner spinner1 = (spinner)getactivity(). findviewbyid(r.id.spinner1);
by :
button members = (button)rootview.findviewbyid(r.id.members); edittext orgname = (edittext)rootview.findviewbyid(r.id.orgname); edittext orgaddress = (edittext)rootview.findviewbyid(r.id.orgaddress); spinner spinner1 = (spinner)rootview.findviewbyid(r.id.spinner1);
edit :
replace:
edittext orgname = (edittext)getactivity().findviewbyid(r.id.orgname); edittext orgaddress = (edittext)getactivity().findviewbyid(r.id.orgaddress);
by :
edittext orgname = (edittext)view.findviewbyid(r.id.orgname); edittext orgaddress = (edittext)view.findviewbyid(r.id.orgaddress);
Comments
Post a Comment