Autore Topic: problema "openOptionsMenu()" appena avviata l'applicazione  (Letto 829 volte)

Offline davidino81

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc one v
  • Sistema operativo:
    Windows 7
problema "openOptionsMenu()" appena avviata l'applicazione
« il: 22 Dicembre 2012, 11:52:56 CET »
0
Ciao a tutti,
ho una activity con  un menu che funziona correttamente, però da quando ho inserito il metodo openOptionsMenu();  mi da sempre errore, se invece metto il metodo sotto un pulsante funziona correttamente. Cosa sbaglio ?
Grazie a tutti  e buone feste.

Codice (Java): [Seleziona]
prefs=  getSharedPreferences("set language", Context.MODE_PRIVATE);
                String ling2 = prefs.getString("lingua2", "no");
                if (ling2=="no"){
            openOptionsMenu();
                }


12-22 10:42:56.599: E/AndroidRuntime(464): Uncaught handler: thread main exiting due to uncaught exception
12-22 10:42:56.620: E/AndroidRuntime(464): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.impararelinglesevocaboli/com.example.impararelinglesevocaboli.MainActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.ActivityThread.access$2200(ActivityThread.java:119)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.os.Looper.loop(Looper.java:123)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.ActivityThread.main(ActivityThread.java:4363)
12-22 10:42:56.620: E/AndroidRuntime(464):    at java.lang.reflect.Method.invokeNative(Native Method)
12-22 10:42:56.620: E/AndroidRuntime(464):    at java.lang.reflect.Method.invoke(Method.java:521)
12-22 10:42:56.620: E/AndroidRuntime(464):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-22 10:42:56.620: E/AndroidRuntime(464):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-22 10:42:56.620: E/AndroidRuntime(464):    at dalvik.system.NativeStart.main(Native Method)
12-22 10:42:56.620: E/AndroidRuntime(464): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.view.ViewRoot.setView(ViewRoot.java:468)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.view.Window$LocalWindowManager.addView(Window.java:424)
12-22 10:42:56.620: E/AndroidRuntime(464):    at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:463)
12-22 10:42:56.620: E/AndroidRuntime(464):    at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:378)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.Activity.openOptionsMenu(Activity.java:2305)
12-22 10:42:56.620: E/AndroidRuntime(464):    at com.example.impararelinglesevocaboli.MainActivity.onCreate(MainActivity.java:96)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-22 10:42:56.620: E/AndroidRuntime(464):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
12-22 10:42:56.620: E/AndroidRuntime(464):    ... 11 more
12-22 10:42:56.649: I/dalvikvm(464): threadid=7: reacting to signal 3
12-22 10:42:56.649: E/dalvikvm(464): Unable to open stack trace file '/data/anr/traces.txt': Permission denied



Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:problema "openOptionsMenu()" appena avviata l'applicazione
« Risposta #1 il: 22 Dicembre 2012, 12:03:06 CET »
0
non è nell'oncreate vero?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline davidino81

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc one v
  • Sistema operativo:
    Windows 7
Re:problema "openOptionsMenu()" appena avviata l'applicazione
« Risposta #2 il: 22 Dicembre 2012, 12:04:02 CET »
0
Si è proprio li.
L'activity iniziale è composta da tre pulsanti ma lei non fa niente.
Vorrei che appena parte il programma per prima cosa si controlla se è settato lo sharedPreference e in caso negativo si apre il menu per settarlo.
« Ultima modifica: 22 Dicembre 2012, 12:07:05 CET da davidino81 »

Offline davidino81

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc one v
  • Sistema operativo:
    Windows 7
Re:problema "openOptionsMenu()" appena avviata l'applicazione
« Risposta #3 il: 22 Dicembre 2012, 12:10:53 CET »
0
Mi hai fatto capire cosa non andava e cercando sul web ho risolto così :


public void onAttachedToWindow() {
       super.onAttachedToWindow();
       prefs=  getSharedPreferences("set language", Context.MODE_PRIVATE);
      String ling2 = prefs.getString("lingua2", "no");
      if (ling2=="no"){
         openOptionsMenu();
      }
   }

Se hai qualche altro metodo lo prendo molto volentieri in considerazione.

Grazie mille.

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:problema "openOptionsMenu()" appena avviata l'applicazione
« Risposta #4 il: 22 Dicembre 2012, 12:52:12 CET »
0
C'è un errore, in Java l'operatore '==' non confronta stringhe ma oggetti. Devi usare il metodo 'equals':

Codice: [Seleziona]
if ("no".equals(ling2)){
...

adb logcat | tee /tmp/logcat | grep TAG

Offline davidino81

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc one v
  • Sistema operativo:
    Windows 7
Re:problema "openOptionsMenu()" appena avviata l'applicazione
« Risposta #5 il: 22 Dicembre 2012, 12:54:32 CET »
0
Grazie, mi dimentico sempre !!