android openPanel菜单是空的

时间:2013-05-30 07:52:28

标签: android activitygroup

我在一个标签中有一个包含多个活动的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。为什么?

1 个答案:

答案 0 :(得分: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);

}