2017-05-20 11 views
-1

私はいくつかの機能に適したトグルボタンを持っています。しかし、私がトーストのために使うとき、トグルボタンはヌルポインタです。Androidのトグルボタンでトーストを有効または無効にするにはどうすればよいですか?

これは私のコードです:

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

のAppは、NOの場合トグルボタンの使用トーストうまく機能しているが、私はトグルボタンとトーストを使用したときにアプリがクラッシュしています。

トグルボタン付きトーストの使い方は?

おかげ

EDIT:

5月20日21:59:07.568:

これはlogcatからである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):at 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):java.lang.reflect.Method.invoke(ネイティブメソッド) 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):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java :899) 05-20 21:59:07.568:E/AndroidRuntime(26777):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 05-20 21:59:07.568:E/AndroidRuntime(26777):原因:java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'boolean android.widget.ToggleButton.isChecked()'を呼び出そうとしました 05-20 21:59:07.568:E/AndroidRuntime (26777):com.testpackage.challenge.CH__QuestionActivity.displayQuestion(CH__QuestionActivity.java:613) 05-20 21:59:07.568:E/AndroidRuntime(26777):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):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さらに

+0

クラッシュの原因となった例外のスタックトレースを投稿します。 –

+0

logcatを追加します。ありがとうございます – Bonnie7

答えて

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)

修正するためにあなたがすべき2つのことがあります。

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

オプション#2はうまく動作します... ありがとう – Bonnie7

0

問題はあなたがトーストに渡す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スレッドからこれを呼び出すことを確認してください。そこ

エムレ

+0

私はチェックします。ありがとう@ emre-aktürk – Bonnie7

+0

もしそうでなければ、クラッシュログも提供してください。 –

+0

05-20 21:53:59.025:E/AndroidRuntime(26122):原因:java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'boolean android.widget.ToggleButton.isChecked()'を呼び出そうとしました – Bonnie7

0

tgButton

幸運が初期化されていません。

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

トグルボタンは別の機能でうまく動作します。サウンドのオン/オフ。 私はこのように初期化されました: tgbutton =(ToggleButton)findViewById(R.id.toggleButton2); – Bonnie7

+0

アクティビティのコード全体を投稿できますか? –

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:ToggleButtonにisChecked()を使用するのは良い方法ではないと思います。あなたはトグルボタンは、オプションの

(オンまたはオフ)のみブールを持っていることが判明してlogcatのレポートから

。したがって、isChecked()機能で確認する必要はありません。

関連する問題