android fragments - Error inflating DrawerLayout -
public class homeactivity extends activity { private string[] drawer_options; private listview mdrawerlist; private drawerlayout mdrawerlayout; private actionbardrawertoggle mdrawertoggle; private charsequence mdrawertitle; private charsequence mtitle; @suppresslint("newapi") @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_home); mtitle = mdrawertitle = gettitle(); drawer_options = getresources().getstringarray(r.array.drawer_array); mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); mdrawerlist = (listview) findviewbyid(r.id.left_drawer); // set custom shadow overlays main content when drawer opens mdrawerlayout.setdrawershadow(r.drawable.drawer_shadow, gravitycompat.start); // set drawer's list view items , click listener mdrawerlist.setadapter(new arrayadapter<string>(this, r.layout.drawer_list_item, drawer_options)); mdrawerlist.setonitemclicklistener(new draweritemclicklistener()); // enable actionbar app icon behave action toggle nav drawer getactionbar().setdisplayhomeasupenabled(true); getactionbar().sethomebuttonenabled(true); // actionbardrawertoggle ties the proper interactions // between sliding drawer , action bar app icon mdrawertoggle = new actionbardrawertoggle( this, /* host activity */ mdrawerlayout, /* drawerlayout object */ r.drawable.ic_drawer, /* nav drawer image replace 'up' caret */ r.string.drawer_open, /* "open drawer" description accessibility */ r.string.drawer_close /* "close drawer" description accessibility */ ) { public void ondrawerclosed(view view) { getactionbar().settitle(mtitle); invalidateoptionsmenu(); // creates call onprepareoptionsmenu() } public void ondraweropened(view drawerview) { getactionbar().settitle(mdrawertitle); invalidateoptionsmenu(); // creates call onprepareoptionsmenu() } }; mdrawerlayout.setdrawerlistener(mdrawertoggle); if (savedinstancestate == null) { selectitem(0); } } @override public boolean oncreateoptionsmenu(menu menu) { menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.main, menu); return super.oncreateoptionsmenu(menu); } /* called whenever call invalidateoptionsmenu() */ @override public boolean onprepareoptionsmenu(menu menu) { // if nav drawer open, hide action items related content view boolean draweropen = mdrawerlayout.isdraweropen(mdrawerlist); menu.finditem(r.id.actionitem1).setvisible(!draweropen); return super.onprepareoptionsmenu(menu); } @override public boolean onoptionsitemselected(menuitem item) { // action bar home/up action should open or close drawer. // actionbardrawertoggle take care of this. if (mdrawertoggle.onoptionsitemselected(item)) { return true; } // handle action buttons switch(item.getitemid()) { case r.id.actionitem1: // create intent perform web search planet intent intent = new intent(intent.action_web_search); intent.putextra(searchmanager.query, getactionbar().gettitle()); // catch event there's no activity handle intent if (intent.resolveactivity(getpackagemanager()) != null) { startactivity(intent); } else { toast.maketext(this, r.string.app_not_available, toast.length_long).show(); } return true; default: return super.onoptionsitemselected(item); } } /* click listner listview in navigation drawer */ private class draweritemclicklistener implements listview.onitemclicklistener { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { selectitem(position); } } private void selectitem(int position) { // update main content replacing fragments fragment fragment = new planetfragment(); bundle args = new bundle(); args.putint(planetfragment.arg_planet_number, position); fragment.setarguments(args); fragmentmanager fragmentmanager = getfragmentmanager(); fragmentmanager.begintransaction().replace(r.id.content_frame, fragment).commit(); // update selected item , title, close drawer mdrawerlist.setitemchecked(position, true); settitle(drawer_options[position]); mdrawerlayout.closedrawer(mdrawerlist); } @override public void settitle(charsequence title) { mtitle = title; getactionbar().settitle(mtitle); } @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); // sync toggle state after onrestoreinstancestate has occurred. mdrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); // pass configuration change drawer toggls mdrawertoggle.onconfigurationchanged(newconfig); } /** * fragment appears in "content_frame" */ public static class planetfragment extends fragment { public static final string arg_planet_number = "planet_number"; public planetfragment() { // empty constructor required fragment subclasses } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.cliq_fragment, container, false); int = getarguments().getint(arg_planet_number); string planet = getresources().getstringarray(r.array.drawer_array)[i]; int imageid = getresources().getidentifier(planet.tolowercase(locale.getdefault()), "drawable", getactivity().getpackagename()); ((imageview) rootview.findviewbyid(r.id.image)).setimageresource(imageid); getactivity().settitle(planet); return rootview; }}}
i'm trying start activity activity using intent. i'm not sure what's wrong or if i'm missing because force closes @ oncreate() tried errors logcat haven't had luck. here's logcat when starts activity.
05-20 22:59:27.697: d/memalloc(21948): /dev/pmem: unmapping buffer base:0x51d88000 size:4976640 offset:4853760 05-20 22:59:27.697: d/memalloc(21948): /dev/pmem: unmapping buffer base:0x52247000 size:5099520 offset:4976640 05-20 22:59:27.697: d/memalloc(21948): /dev/pmem: unmapping buffer base:0x52724000 size:5222400 offset:5099520 05-20 22:59:27.727: w/dalvikvm(21948): vfy: unable resolve virtual method 53: landroid/support/v4/widget/drawerlayout;.closedrawer (landroid/view/view;)v 05-20 22:59:27.727: w/dalvikvm(21948): vfy: unable resolve virtual method 50: landroid/support/v4/app/actionbardrawertoggle;.onconfigurationchanged (landroid/content/res/configuration;)v 05-20 22:59:27.727: e/dalvikvm(21948): not find class 'android.support.v4.widget.drawerlayout', referenced method com.example.facecliq.homeactivity.oncreate 05-20 22:59:27.727: w/dalvikvm(21948): vfy: unable resolve check-cast 32 (landroid/support/v4/widget/drawerlayout;) in lcom/example/facecliq/homeactivity; 05-20 22:59:27.727: w/dalvikvm(21948): vfy: unable resolve virtual method 51: landroid/support/v4/app/actionbardrawertoggle;.onoptionsitemselected (landroid/view/menuitem;)z 05-20 22:59:27.727: w/dalvikvm(21948): vfy: unable resolve virtual method 52: landroid/support/v4/app/actionbardrawertoggle;.syncstate ()v 05-20 22:59:27.727: w/dalvikvm(21948): vfy: unable resolve virtual method 54: landroid/support/v4/widget/drawerlayout;.isdraweropen (landroid/view/view;)z 05-20 22:59:27.727: w/dalvikvm(21948): unable resolve superclass of lcom/example/facecliq/homeactivity$1; (30) 05-20 22:59:27.737: w/dalvikvm(21948): link of class 'lcom/example/facecliq/homeactivity$1;' failed 05-20 22:59:27.757: w/dalvikvm(21948): threadid=1: thread exiting uncaught exception (group=0x40a9e1f8) 05-20 22:59:27.777: e/androidruntime(21948): fatal exception: main 05-20 22:59:27.777: e/androidruntime(21948): java.lang.runtimeexception: unable start activity componentinfo{com.example.facecliq/com.example.facecliq.homeactivity}: android.view.inflateexception: binary xml file line #1: error inflating class android.support.v4.widget.drawerlayout 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activitythread.performlaunchactivity(activitythread.java:1956) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activitythread.handlelaunchactivity(activitythread.java:1981) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activitythread.access$600(activitythread.java:123) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activitythread$h.handlemessage(activitythread.java:1147) 05-20 22:59:27.777: e/androidruntime(21948): @ android.os.handler.dispatchmessage(handler.java:99) 05-20 22:59:27.777: e/androidruntime(21948): @ android.os.looper.loop(looper.java:137) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activitythread.main(activitythread.java:4424) 05-20 22:59:27.777: e/androidruntime(21948): @ java.lang.reflect.method.invokenative(native method) 05-20 22:59:27.777: e/androidruntime(21948): @ java.lang.reflect.method.invoke(method.java:511) 05-20 22:59:27.777: e/androidruntime(21948): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:812) 05-20 22:59:27.777: e/androidruntime(21948): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:579) 05-20 22:59:27.777: e/androidruntime(21948): @ dalvik.system.nativestart.main(native method) 05-20 22:59:27.777: e/androidruntime(21948): caused by: android.view.inflateexception: binary xml file line #1: error inflating class android.support.v4.widget.drawerlayout 05-20 22:59:27.777: e/androidruntime(21948): @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:691) 05-20 22:59:27.777: e/androidruntime(21948): @ android.view.layoutinflater.inflate(layoutinflater.java:466) 05-20 22:59:27.777: e/androidruntime(21948): @ android.view.layoutinflater.inflate(layoutinflater.java:396) 05-20 22:59:27.777: e/androidruntime(21948): @ android.view.layoutinflater.inflate(layoutinflater.java:352) 05-20 22:59:27.777: e/androidruntime(21948): @ com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:251) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activity.setcontentview(activity.java:1835) 05-20 22:59:27.777: e/androidruntime(21948): @ com.example.facecliq.homeactivity.oncreate(homeactivity.java:40) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activity.performcreate(activity.java:4465) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1049) 05-20 22:59:27.777: e/androidruntime(21948): @ android.app.activitythread.performlaunchactivity(activitythread.java:1920) 05-20 22:59:27.777: e/androidruntime(21948): ... 11 more 05-20 22:59:27.777: e/androidruntime(21948): caused by: java.lang.classnotfoundexception: android.support.v4.widget.drawerlayout 05-20 22:59:27.777: e/androidruntime(21948): @ dalvik.system.basedexclassloader.findclass(basedexclassloader.java:61) 05-20 22:59:27.777: e/androidruntime(21948): @ java.lang.classloader.loadclass(classloader.java:501) 05-20 22:59:27.777: e/androidruntime(21948): @ java.lang.classloader.loadclass(classloader.java:461) 05-20 22:59:27.777: e/androidruntime(21948): @ android.view.layoutinflater.createview(layoutinflater.java:552) 05-20 22:59:27.777: e/androidruntime(21948): @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:680) 05-20 22:59:27.777: e/androidruntime(21948): ... 20 more
make sure you're using latest revision of support library(13) contains drawerlayout , other relevant classes. copy .jar support library /libs folder of project. finally, update adt latest version. logcat complaining
caused by: android.view.inflateexception: binary xml file line #1: error inflating class android.support.v4.widget.drawerlayout 05-20 22:59:27.777: e/androidruntime(21948): @ not find class 'android.support.v4.widget.drawerlayout', referenced method com.example.facecliq.homeactivity.oncreate
Comments
Post a Comment