Android Activitygroup Menu Problem
Solution 1:
Another nice way of handling this is by using the ActivityGroup's LocalActivityManager. Get the local activity manager, get the current activity, and perform that activity's appropriate method:
public boolean onPrepareOptionsMenu(Menu menu) {
//super.onPrepareOptionsMenu(menu);
return getLocalActivityManager().getCurrentActivity()
.onCreateOptionsMenu(menu);
}
public boolean onCreateOptionsMenu(Menu menu) {
//super.onCreateOptionsMenu(menu);
return getLocalActivityManager().getCurrentActivity()
.onCreateOptionsMenu(menu);
}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
//super.onMenuItemSelected(featureId, item);
return getLocalActivityManager().getCurrentActivity()
.onMenuItemSelected(featureId, item);
}
Note: using this strategy, you must not call super.onCreateOptionsMenu from the child activity- doing so causes a stack overflow exception. I'm not sure what the purpose of calling the superclass's on* methods, as I've omitted them and have seen no negative results. (... yet)
Solution 2:
You need to override the menu methods in the activity group, and call the corresponding methods on the child activity. See this article: How to Create Options Menu on Child Activity inside an ActivityGroup
publicclassTestGroupextendsActivityGroup {
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//start child activity
}
@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
returngetLocalActivityManager().getCurrentActivity().onCreateOptionsMenu(menu);
}
@OverridepublicbooleanonMenuItemSelected(int featureId, MenuItem item) {
returngetLocalActivityManager().getCurrentActivity().onMenuItemSelected(featureId, item);
}
}
Solution 3:
use this code on the tabGroupActivity
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// TODO Auto-generated method stub
return getLocalActivityManager().getCurrentActivity().onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
return getLocalActivityManager().getCurrentActivity().onMenuItemSelected(featureId, item);
}
use the code which given below in both 2 child Activities
@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_1, menu);
returntrue;
}// menu_1 is the xml file in menu folder@OverridepublicbooleanonMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.weekly:
Intentweekly=newIntent(getParent(),Activity1.class);
TabGroupActivityparentActivity= (TabGroupActivity)getParent();
parentActivity.startChildActivity("weeklyview", weekly);
break;
case R.id.daily :
Intentdaily=newIntent(getParent(),Activity2.class);
TabGroupActivityparentActivity2= (TabGroupActivity)getParent();
parentActivity2.startChildActivity("daily", daily);
break;
default:
break;
}
//use return truereturntrue;
}
Solution 4:
Yet another approach is to create the menu in the ActivityGroup root and then use public boolean onPrepareOptionsMenu(Menu menu) to clear and re-add menu items.
In ActivityGroup class:
@OverridepublicbooleanonCreateOptionsMenu(Menu menu)
{
//what is the current activity?
menu.add(0, 0, 0, "holder");
returntrue;
}
@OverridepublicbooleanonPrepareOptionsMenu(Menu menu)
{
//start a new
menu.clear();
//add some menu options
.getLocalActivityManager().getCurrentActivity().onPrepareOptionsMenu(menu);
returnsuper.onPrepareOptionsMenu(menu);
}
In Activity:
@OverridepublicbooleanonPrepareOptionsMenu(Menu menu)
{ //add menus or inflate herereturntrue;
}
Solution 5:
Check this thread.
Menu's can be handled in the parent aactivity, but created in the child activity
Post a Comment for "Android Activitygroup Menu Problem"