Monday, 15 March 2010

android - Navigation Drawer freezing when adding Gridview to the activity -



android - Navigation Drawer freezing when adding Gridview to the activity -

i using navigation drawer , grid view on same activity 1 time did that, not able scroll or click on activity. moreover, navigation drawer refuses open or respond touch. have checked code @ to the lowest degree 3 times still cant figure out why not working.

activity code:

package com.project.iandwe; import android.app.actionbar; import android.app.activity; import android.support.v4.app.fragment; import android.support.v4.app.fragmentactivity; import android.support.v4.app.fragmentmanager; import android.content.intent; import android.content.res.configuration; import android.content.res.typedarray; import android.graphics.color; import android.graphics.drawable.colordrawable; import android.os.bundle; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.widget.drawerlayout; import android.util.log; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.gridview; import android.widget.listview; import com.google.android.gms.common.api.googleapiclient; import com.project.iandwe.adaptor.eventadapter; import com.project.iandwe.adaptor.navigationdrawerlistadapter; import com.project.iandwe.fragments.detailedevent; import com.project.iandwe.menu.*; import com.project.iandwe.navigation.navigationdrawer; import java.util.arraylist; /** * created nathandrake on 5/10/2014. */ public class homepage extends fragmentactivity implements adapterview.onitemclicklistener{ //public static final int add_event_request =1; private drawerlayout drawerlayout; private listview drawerlistview; private actionbardrawertoggle actionbardrawertoggle; // nav drawer title private charsequence drawertitle; // used store app title private charsequence title; // slide menu items private string[] navmenutitles; private typedarray navmenuicons; private arraylist<navigationdrawer> navigationdrawers; private navigationdrawerlistadapter adapter; // google client interact google api //private googleapiclient mgoogleapiclient; gridview gridview; @override public void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.home_page); actionbar actionbar = getactionbar(); actionbar.setbackgrounddrawable(new colordrawable(color.blue)); actionbar.show(); //initialize grid view home page displaying events gridview = (gridview) findviewbyid(r.id.gridviewcalendar); gridview.setadapter(new eventadapter(this)); //for slider menu title = drawertitle = gettitle(); // load slide menu items navmenutitles = getresources().getstringarray(r.array.nav_drawer_items); // nav drawer icons resources navmenuicons = getresources().obtaintypedarray(r.array.nav_drawer_icons); drawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); drawerlistview = (listview) findviewbyid(r.id.list_slidermenu); navigationdrawers = new arraylist<navigationdrawer>(); // adding nav drawer items array // home navigationdrawers.add(new navigationdrawer(navmenutitles[0], navmenuicons.getresourceid(0, -1))); // view contacts navigationdrawers.add(new navigationdrawer(navmenutitles[1], navmenuicons.getresourceid(1, -1))); // view groups navigationdrawers.add(new navigationdrawer(navmenutitles[2], navmenuicons.getresourceid(2, -1))); // view invites navigationdrawers.add(new navigationdrawer(navmenutitles[3], navmenuicons.getresourceid(3, -1))); // view settings navigationdrawers.add(new navigationdrawer(navmenutitles[4], navmenuicons.getresourceid(4, -1))); // log off navigationdrawers.add(new navigationdrawer(navmenutitles[5], navmenuicons.getresourceid(5, -1))); // recycle typed array navmenuicons.recycle(); // setting nav drawer list adapter adapter = new navigationdrawerlistadapter(getapplicationcontext(), navigationdrawers); drawerlistview.setadapter(adapter); drawerlistview.setonitemclicklistener(new draweritemclicklistener()); // enabling action bar app icon , behaving toggle button getactionbar().setdisplayhomeasupenabled(true); getactionbar().sethomebuttonenabled(true); actionbardrawertoggle = new actionbardrawertoggle(this, drawerlayout, r.drawable. ic_drawer, //nav menu toggle icon r.string.app_name, // navigation drawer open - description accessibility r.string.app_name ) { // navigation drawer close - description accessibility public void ondrawerclosed(view view) { getactionbar().settitle(title); // calling onprepareoptionsmenu() show action bar icons invalidateoptionsmenu(); } public void ondraweropened(view drawerview) { getactionbar().settitle(drawertitle); // calling onprepareoptionsmenu() hide action bar icons invalidateoptionsmenu(); } }; drawerlayout.setdrawerlistener(actionbardrawertoggle); if (savedinstancestate == null) { // on first time display view first nav item displayview(0); } } @override public boolean onprepareoptionsmenu(menu menu) { // if nav drawer opened, hide action items boolean draweropen = drawerlayout.isdraweropen(drawerlistview); menu.finditem(r.id.action_add).setvisible(!draweropen); homecoming super.onprepareoptionsmenu(menu); } @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { intent intent = new intent(this, detailedevent.class); intent.putextra("eventid",""); startactivity(intent); } /** * slide menu item click listener * */ private class draweritemclicklistener implements listview.onitemclicklistener{ @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { displayview(position); } } /** * displaying fragment view selected nav drawer list item * */ private void displayview(int position) { // update main content replacing fragments fragment fragment = null; switch (position) { case 0: fragment = new homefragment(); break; case 1: fragment = new contactsfragments(); break; case 2: fragment = new groupfragment(); break; case 3: fragment = new invitesfragment(); break; case 4: fragment = new settingsfragment(); break; case 5: fragment = new logofffragment(); break; default: break; } if (fragment != null) { fragmentmanager fragmentmanager = getsupportfragmentmanager();; fragmentmanager.begintransaction() .replace(r.id.frame_container, fragment).commit(); // update selected item , title, close drawer drawerlistview.setitemchecked(position, true); drawerlistview.setselection(position); settitle(navmenutitles[position]); drawerlayout.closedrawer(drawerlistview); } else { // error in creating fragment log.e("mainactivity", "error in creating fragment"); } } @override public void settitle(charsequence title) { this.title = title; getactionbar().settitle(this.title); } /** * when using actionbardrawertoggle, must phone call during * onpostcreate() , onconfigurationchanged()... */ @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); // sync toggle state after onrestoreinstancestate has occurred. actionbardrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); // pass configuration alter drawer toggles actionbardrawertoggle.onconfigurationchanged(newconfig); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.add_event_menu, menu); homecoming true; } @override public boolean onoptionsitemselected(menuitem item) { // handle item selection switch (item.getitemid()) { case r.id.action_add: intent intent = new intent(this,addevent.class); startactivity(intent); homecoming true; default: homecoming super.onoptionsitemselected(item); } } }

my xml code same activity looks this:

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- framelayout display fragments --> <framelayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" > </framelayout> <!-- listview display slider menu --> <listview android:id="@+id/list_slidermenu" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choicemode="singlechoice" android:divider="#ffcc00" android:dividerheight="1dp" android:listselector="@drawable/list_selector" android:background="#111"/> </android.support.v4.widget.drawerlayout> <gridview android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/gridviewcalendar" android:layout_gravity="left|top" android:numcolumns="auto_fit" android:horizontalspacing="1dp" android:verticalspacing="1dp" android:stretchmode="spacingwidthuniform" android:columnwidth="174dp" android:scrollingcache="true" android:padding="0dp" android:alwaysdrawnwithcache="true" android:gravity="center_horizontal" android:clipchildren="true" /> </relativelayout>

i checked steps page : creating navigation drawer thing if remove drawer or grid view, works fine. tried invalidating cache , restart (using intellij) still no luck. checked other questions on till no luck in resolving this.

i had move onclick listener of gridview within gridview adaptor class , things started working.. not sure why happened.

android android-fragments android-gridview android-navigation

No comments:

Post a Comment