2013-05-30 2 views
0

J'ai un ongletActivité avec plusieurs activités dans un onglet.Le menu android openPanel est vide

Le travail de code suivant sur Android 2.3 mais il ne fonctionne pas sur 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; 
    } 

Besoin d'aide !!!

Ni dans Activity1Tab1 ou dans Activity2Tab1 la méthode de forçage onKeyUp() est jamais appelé. Les seules méthodes appelées proviennent de StackActivity. POURQUOI?

Répondre

1

Après quelques recherches et quelques réflexions, je parviens à faire fonctionner ce code.

Au lieu d'utiliser onPrepareOptionMenu (menu) et onCreateOptionMenu (menu) J'ai passer outre la méthode suivante dans StackActivity:

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

et Activity1Tab1 et Activity2Tab1 j'avais la méthode:

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

}