2017-05-20 5 views
-1

J'ai bouton bascule qui fonctionne bien pour certaines fonctions. Mais quand je l'utilise pour toast, bouton bascule est null pointeur.Comment activer et désactiver toast avec bouton bascule dans Android?

Ceci est mon code:

if (tgbutton.isChecked()) { 
    Toast.makeText(getApplicationContext(), "MY TEXT HERE", Toast.LENGTH_LONG).show(); 
    } 

App fonctionne bien quand toast utilisation sans bouton à bascule, mais l'application est écrasé quand je toast avec bouton à bascule. Comment utiliser le pain grillé avec le bouton à bascule?

Merci

EDIT:

Ceci est de logcat:

05-20 21: 59: 07,568: E/AndroidRuntime (26777): java.lang.RuntimeException : Impossible de démarrer l'activité ComponentInfo {com.mygames.testpackage2/com.testpackage.challenge.CH__QuestionActivity}: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'boolean android.widget.ToggleButton.isChecked()' sur une référence d'objet null 05-20 21: 59: 07.568: E/AndroidRuntime (26777): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2316) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2376) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à l'adresse android.app.ActivityThread.access $ 800 (ActivityThread.java:147) 05- 20 21: 59: 07.568: E/AndroidRuntime (26777): à l'adresse android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1281) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): sur android .os.Handler.dispatchMessage (Handler.java:102) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à l'adresse android.os.Looper.loop (Looper.java:135) 05-20 21 : 59: 07.568: E/AndroidRuntime (26777): à l'adresse android.app.ActivityThread.main (ActivityThread.java:5253) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à java.lang.reflect.Method.invoke (méthode native) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à Java .lang.reflect.Method.invoke (Method.java:372) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à l'adresse com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 899) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à l'adresse com.android.internal.os.ZygoteInit.main (ZygoteInit.java:694) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): Causé par: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'boolean android.widget.ToggleButton.isChecked()' sur une référence d'objet null 05-20 21: 59: 07.568: E/AndroidRuntime (26777): at com.testpackage.challenge.CH__QuestionActivity.displayQuestion (CH__QuestionActivity.java:613) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): at com.testpackage.challenge.CH__QuestionActivity.displayNextQuestion (CH__QuestionActivity.java:554) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à com.testpackage.challenge.CH__QuestionActivity.onCreate (CH__QuestionActivity.java:218) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): at android.app.Activity.performCreate (Activity.java:5975) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1105) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): à l'adresse android.app.ActivityThread.performLaunchActivity (ActivityThread.java : 2269) 05-20 21: 59: 07.568: E/AndroidRuntime (26777): ... 10 plus

+0

poster la trace de la pile de l'exception à l'origine du plantage –

+0

J'ajoute logcat. Merci – Bonnie7

Répondre

0

Le spectacle de trace de la pile que votre tgbutton est null.

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.ToggleButton.isChecked()' on a null object reference 05-20 21:59:07.568: E/AndroidRuntime(26777)

Il y a 2 choses que vous devez pour corriger:

1) Assurez-vous de lier votre point de vue.

ToggleButton tgButton = (ToggleButton) findViewById(R.id.your_tg_button_id); 

2) Assurez-vous de vérifier null avant utilisation:

if (null != tgbutton && tgbutton.isChecked()) { 
    Toast.makeText(getApplicationContext(), "MY TEXT HERE", Toast.LENGTH_LONG).show(); 
} 
+0

l'option # 2 est le travail verryy bon ... Merci – Bonnie7

0

Je pense que le problème concerne le contexte que vous passez à toast.

if (tgbutton.isChecked()) { 
    Toast.makeText(this, "MY TEXT HERE", Toast.LENGTH_LONG).show(); 
} 

ou si vous êtes dans le fragment,

if (tgbutton.isChecked()) { 
    Toast.makeText(getContext(), "MY TEXT HERE", Toast.LENGTH_LONG).show(); 
} 

Assurez-vous que vous appelez cela de thread d'interface utilisateur.

Bonne chance il

Emre

+0

Je vais vérifier. Merci @ emre-aktürk – Bonnie7

+0

Si non, pouvez-vous également fournir le journal des accidents s'il vous plaît? –

+0

05-20 21: 53: 59.025: E/AndroidRuntime (26122): Causée par: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'boolean android.widget.ToggleButton.isChecked()' sur une référence d'objet nul – Bonnie7

0

tgButton n'est pas initialisé. Assurez-vous qu'il est initialisé par:

ToggleButton tgButton = (ToggleButton) findViewById(R.id.your_tg_button_id); 
+0

Le bouton bascule fonctionne correctement avec une autre fonction, par ex. son on/off. J'ai été initialisé comme ceci: tgbutton = (ToggleButton) findViewById (R.id.toggleButton2); – Bonnie7

+0

pouvez-vous poster le code de toute l'activité? –

0

Solution: -

ToggleButton tb; 

tb = (ToggleButton)findViewById(R.id.toggle_button_id); 

if(tb.equals("ON") { 

    Toast.makeText(getApplicationContext(), "Message", Toast.LENGTH_LONG).show(); 
} else { 

    Toast.makeText(getApplicationContext(), "Else Part", Toast.LENGTH_LONG).show(); 
} 

Vive !!

P.S: Je pense que ce n'est pas une bonne pratique d'utiliser isChecked() pour ToggleButton.

D'après le rapport de logcat vous constaté que ToggleButton est d'avoir seulement booléenne

d'options (On ou Off). Vous n'avez donc pas besoin de vérifier avec la fonction isChecked().