0

我有一个 tabActivity 在一个选项卡中有多个活动。

以下代码适用于 android 2.3,但不适用于 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;
    }

需要一些帮助!!!

无论是在Activity1Tab1还是在Activity2Tab1中,都不会调用覆盖方法onKeyUp()。唯一调用的方法来自 StackActivity。为什么?

4

1 回答 1

1

经过一些研究和一些思考后,我设法使这段代码工作。

我没有使用 onPrepareOptionMenu(menu) 和 onCreateOptionMenu(menu),而是在 StackActivity 中覆盖了以下方法:

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

在 Activity1Tab1 和 Activity2Tab1 我有方法:

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

}
于 2013-05-30T08:01:14.887 回答