android - Dynamically setting ActionBar drop down navigation -
getsupportactionbar().setdisplayshowtitleenabled(false); getsupportactionbar().setnavigationmode(actionbar.navigation_mode_list); spinneradapter mspinneradapter = arrayadapter.createfromresource(this, r.array.actionoptions, android.r.layout.simple_dropdown_item_1line); calendar c = calendar.getinstance(); int hours = c.get(calendar.hour_of_day); if(hours<6) { getsupportactionbar().setselectednavigationitem(1); supportinvalidateoptionsmenu(); } else if(hours>=21) { getsupportactionbar().setselectednavigationitem(1); supportinvalidateoptionsmenu(); } else { getsupportactionbar().setselectednavigationitem(0); supportinvalidateoptionsmenu(); } onnavigationlistener monnavigationlistener = new onnavigationlistener() { @override public boolean onnavigationitemselected(int itemposition, long itemid) { // todo auto-generated method stub switch(itemposition){ case 0: ismode = "dmode"; break; case 1: ismode = "nmode"; break; default: } return false; } }; getsupportactionbar().setlistnavigationcallbacks(mspinneradapter, monnavigationlistener); in following code, trying set drop down in action bar according time of day. if between 9pm 6 pm mode set otherwise mode b set. according default definition, mode set @ index position 1 , mode b @ 2. code not seem work. please. , did try code without supportinvalidateoptionsmenu(). not work @ all.
you need add adapter actionbar.
like this:
getsupportactionbar().setlistnavigationcallbacks(mspinneradapter , this); so action bar knows display in list.
besides need set title false
getsupportactionbar().setdisplayshowtitleenabled(false); plus adapter should use right context:
context context = getsupportactionbar().getthemedcontext(); and thus
spinneradapter mspinneradapter = arrayadapter.createfromresource(context, r.array.actionoptions, android.r.layout.simple_dropdown_item_1line);
Comments
Post a Comment