Question

I have a tabActivity with multiple activities in one tab.

The following code work on android 2.3 but it's not working on android 4.2

ActivityStack.java

public class ActivityStack extends ActivityGroup {
..

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // // what is the current activity?
        menu.add(0, 0, 0, "holder");

    return true;

}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // start a new
    menu.clear();
    // add some menu options
    getLocalActivityManager().getCurrentActivity().onPrepareOptionsMenu(menu);
    return super.onPrepareOptionsMenu(menu);

}

.. Activity1Tab1.java

here I have a button from where I am calling Activity2Tab1.java onClickListener
Intent acIntent = new Intent();
                    acIntent.setClass(getParent(),
                            Activity2Tab1.class);
                    ActivityStack activityStack = (ActivityStack) getParent();
                    activityStack.push("SecondActivity", acIntent);

Activity2Tab1.java

..
here I have multiple layouts...defined
@Override
    public boolean onPrepareOptionsMenu(Menu menu)
    { //add menus or inflate here
        Log.d(TAG, "onPrepareOptionMenu");
        if (!isMainMenuVisible) {
            pushMainMenuUp();
        } else {
            pushMainMenuDown();
        }
        return true;
    }

Need some help!!!

Neither in Activity1Tab1 or in Activity2Tab1 the override method onKeyUp() IS NEVER CALLED. The only called methods are from StackActivity. WHY?

Was it helpful?

Solution

After some research done and some thinking I manage to make this code work.

Instead of using onPrepareOptionMenu(menu) and onCreateOptionMenu(menu) I've override the following method in StackActivity:

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        Log.d(TAG, keyCode+"");
         getLocalActivityManager().getCurrentActivity().onKeyUp(keyCode, event);
            return super.onKeyUp(keyCode, event);
    }

and in Activity1Tab1 and Activity2Tab1 I had the method:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    Log.d(TAG, ""+event.getAction());
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        Log.d(TAG, "MENU_BUTTON_PRESSED");

        if (!isMainMenuVisible) {
            pushMainMenuUp();
        } else {
            pushMainMenuDown();
        }
    }
    return super.onKeyUp(keyCode, event);

}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top