2013-05-30 18 views
0

我有一个tabActivity在一个选项卡中有多个活动。android openPanel菜单是空的

在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; 
    } 

需要一些帮助!

既不Activity1Tab1Activity2Tab1的重写方法的onkeyup()不会被调用。唯一被调用的方法来自StackActivity。为什么?

回答

1

经过一些研究和一些想法,我设法使这个代码工作。

而不是使用onPrepareOptionMenu(菜单)和onCreateOptionMenu(菜单),我已经覆盖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); 

}