Search code examples
androidtoastandroid-togglebutton

How to enable and disable toast with toggle button in Android?


I have toggle button which work good for some function. But when I use for toast, toggle button is null pointer.

This is my code:

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

App is working well when use toast with no toggle button, but app is crashed when I used toast with toggle button.

How to use toast with toggle button?

Thanks

EDIT:

This is from logcat:

05-20 21:59:07.568: E/AndroidRuntime(26777): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mygames.testpackage2/com.testpackage.challenge.CH__QuestionActivity}: 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): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316) 05-20 21:59:07.568: E/AndroidRuntime(26777): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2376) 05-20 21:59:07.568: E/AndroidRuntime(26777): at android.app.ActivityThread.access$800(ActivityThread.java:147) 05-20 21:59:07.568: E/AndroidRuntime(26777): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 05-20 21:59:07.568: E/AndroidRuntime(26777): at android.os.Handler.dispatchMessage(Handler.java:102) 05-20 21:59:07.568: E/AndroidRuntime(26777): at android.os.Looper.loop(Looper.java:135) 05-20 21:59:07.568: E/AndroidRuntime(26777): at android.app.ActivityThread.main(ActivityThread.java:5253) 05-20 21:59:07.568: E/AndroidRuntime(26777): at java.lang.reflect.Method.invoke(Native Method) 05-20 21:59:07.568: E/AndroidRuntime(26777): at java.lang.reflect.Method.invoke(Method.java:372) 05-20 21:59:07.568: E/AndroidRuntime(26777): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 05-20 21:59:07.568: E/AndroidRuntime(26777): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 05-20 21:59:07.568: E/AndroidRuntime(26777): Caused by: 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): 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): at 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): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 05-20 21:59:07.568: E/AndroidRuntime(26777): ... 10 more


Solution

  • The stack trace show that your tgbutton is 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)

    There are 2 things you should to correct:

    1) Make sure to bind your view.

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

    2) Make sure to check null before use:

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