-1

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

Bonnie7
  • 19
  • 1
  • 10

4 Answers4

0

I think problem is about Context that you pass to toast.

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

or if you are in fragment,

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

Make sure you call this from UI thread.

Good luck there

Emre

Emre Aktürk
  • 3,306
  • 2
  • 18
  • 30
0

tgButton is not initialized. Ensure it is initialized by:

ToggleButton tgButton = (ToggleButton) findViewById(R.id.your_tg_button_id);
Veneet Reddy
  • 2,707
  • 1
  • 24
  • 40
  • Toggle button is work fine with another function, eg. sound on/off. I was initialized like this: tgbutton = (ToggleButton) findViewById(R.id.toggleButton2); – Bonnie7 May 20 '17 at 15:13
0

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();
}
Robust
  • 2,415
  • 2
  • 22
  • 37
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();
}

Cheers!!

P.S : I think, it is not a good practice to use isChecked() for ToggleButton.

From the report of logcat you may found that ToggleButton is having only boolean

of options (On or Off). So you need not to verify with isChecked() function.

Jozef Dochan
  • 926
  • 10
  • 27