2010-05-05 5 views
10

est-il un autre moyen d'appeler openOptionsMenu après l'activité est affiché sans utiliser quelque chose comme ceci:Android - openOptionsMenu ne fonctionne pas dans onCreate

 
new Handler().postDelayed(new Runnable() { 
      public void run() { 
       openOptionsMenu(); 
      } 
     }, 1000); 

Référence: http://groups.google.com/group/android-beginners/browse_frm/thread/b10a8ea840c07725/1ce48bb147a3ed1a?#1ce48bb147a3ed1a

EDIT: Je vous serais reconnaissant par exemple comme ceci:

 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Now I guess something like Window.Callback.onAttachedToWindow(...) should be done? 
} 
+0

Cette solution est vraiment très fragile – Casebash

Répondre

21

J'ai regardé à nouveau à Activity, et il a eu la méthode onAttachedToWindow, hérité de Window.Callback, depuis le niveau API 5. Si vous utilisez ce niveau, vous devez simplement remplacer cette méthode dans votre Activity.

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    openOptionsMenu(); 
} 

Si vous utilisez une version antérieure à 5, alors vous devez remplacer le onAttachedToWindow method in View à la place. C'est très facile si votre View est créé dans le code. Si elle est créée en XMl, alors ce n'est pas si difficile - vous devriez trouver le instructions here utile.

+0

Et où dois-je insérer cette dérogation, l'activité n'a pas onAttachedToWindow? – kape123

+1

@ kape123: J'ai ajouté des informations supplémentaires. J'espère que cela aide – Casebash

+0

Pouvez-vous s'il vous plaît me donner un exemple complet? Merci d'avance! – kape123

-1

Ma solution

//Open menu manually from code 
    Timer timing = new Timer(); 
    timing.schedule(new TimerTask() { 

       /** 
       * {@inheritDoc} 
       */ 
       @Override 
       public void run() { 

        runOnUiThread(new Runnable() { 

         @Override 
         public void run() { 
          openOptionsMenu(); 
         } 
        }); 

       } 
      }, 1000); 
+0

... c'est pire version du code que j'ai déjà posté dans ma question – kape123

+0

hey, l'avez-vous essayé? Je l'utilise dans ma propre application sur le marché. – RubyDeveloper

+0

Il est généralement incorrect d'utiliser la planification par minuterie au démarrage ou au chargement, en particulier si vous pouvez utiliser un rappel dédié. – ohaleck

Questions connexes