Skip to content Skip to sidebar Skip to footer

Android Activitygroup Menu Problem

I have one problem using ActivityGroup. I have two activities inside an ActivityGroup and both of them use a menu (overriding the onCreateOptionMenu and onOptionsItemSelected). Wel

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"