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?

Était-ce utile?

La 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);

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top