如何在Android中使用切换按钮启用和禁用Toast?

时间:2017-05-20 14:43:59

标签: android toast android-togglebutton

我有切换按钮,对某些功能有用。但是当我用于吐司时,切换按钮是空指针。

这是我的代码:

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

当使用没有切换按钮的吐司时,应用程序运行良好,但是当我使用切换按钮进行吐司时应用程序崩溃。

如何使用切换按钮进行吐司?

由于

修改

这是来自logcat:

  

05-20 21:59:07.568:E / AndroidRuntime(26777):java.lang.RuntimeException:无法启动活动ComponentInfo {com.mygames.testpackage2 / com.testpackage.challenge.CH__QuestionActivity}:java.lang。 NullPointerException:尝试在空对象引用上调用虚方法'boolean android.widget.ToggleButton.isChecked()'   05-20 21:59:07.568:E / AndroidRuntime(26777):在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):在android.app.ActivityThread.access $ 800(ActivityThread.java:147)   05-20 21:59:07.568:E / AndroidRuntime(26777):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1281)   05-20 21:59:07.568:E / AndroidRuntime(26777):在android.os.Handler.dispatchMessage(Handler.java:102)   05-20 21:59:07.568:E / AndroidRuntime(26777):在android.os.Looper.loop(Looper.java:135)   05-20 21:59:07.568:E / AndroidRuntime(26777):在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):引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'boolean android.widget.ToggleButton.isChecked()'   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):在android.app.Activity.performCreate(Activity.java:5975)   05-20 21:59:07.568:E / AndroidRuntime(26777):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)   05-20 21:59:07.568:E / AndroidRuntime(26777):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)   05-20 21:59:07.568:E / AndroidRuntime(26777):... 10 more

4 个答案:

答案 0 :(得分:0)

我认为问题是关于传递给toast的Context。

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

或者如果你是片段,

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

确保从UI线程调用此方法。

祝你好运

埃姆雷

答案 1 :(得分:0)

tgButton未初始化。确保通过以下方式初始化:

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

答案 2 :(得分:0)

堆栈跟踪显示您的tgbutton为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)

你应该纠正两件事:

1)确保绑定您的观点。

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

2)确保在使用前检查null

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

答案 3 :(得分:0)

解决方案: -

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();
}

干杯!!

P.S:我认为,将isChecked()用于ToggleButton不是一个好习惯。

从logcat的报告中你可能会发现ToggleButton只有布尔值

选项(开或关)。因此,您无需使用isChecked()函数进行验证。

相关问题