2017-01-27 6 views
1

私はカスタムカラーでボタンやその他のアイテムを設定しようとしていました。私はjavaを初めて使いました。コンテキストを正しく使う方法を学びました。私はいくつかの研究を行いましたが、まだ解決策を見つけることができません。getColor、Android Studioへのコンテキストの受け渡し

アンドロイドモニタエラーはヌルポインタ例外です。これは問題のあるコード行です。

int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds); 

私は私のクラスの中にこの変数を宣言した後、さらに下の方法で、私はこれを書いた:私は、これら2つの矛盾するかもしれないと思ったが、それはおよそ私が考えることができるすべてです

percussionButton.setBackgroundColor(buttonBackground); 
instrumentButton.setBackgroundResource(android.R.drawable.btn_default); 

をオフ。

これまでに回答があったことをお詫び申し上げます。これまでに見つかったものから回答を得られませんでした。私が前に試した

もの:

int buttonBackground = ContextCompat.getColor(getBaseContext(), R.color.buttonBackgrounds); 

int buttonBackground = ContextCompat.getColor(getApplicationContext(), R.color.buttonBackgrounds); 

答えて

1

は、コンテキストgetterメソッドhereの違いを理解するための答えをお読みください。
それがnullを返すと、例外が発生する可能性があります。つまり、getBaseContext()を呼び出し、nullポインタ例外です。
アクティビティのコンテキスト(アクティビティクラス内)を使用する場合は、Context引数としてthis(またはYourActivityClass.this、YourActivityClassは常にアクティビティの名前です)を渡すことができます。したがって、例外を含む行は、次のようになります。

int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds); 
+0

はい、私はまだ同じエラーがあることを試みました。リンクをありがとう、私は詳細を読むためにそれを読んでみましょう。 – Mopork

+0

私はもう一度あなたの質問を読んで、何かに気付きました。もしあなたが 'buttonBackground'変数の値を使いたいのであれば、あなたのアクティビティの' onCreate'メソッドからその値を設定してください。物、文脈など)が設定されています。 – nvi9

+0

素晴らしい!それは今働く、ありがとう。私はonCreateメソッドの中でそれを持つ必要があることを認識していませんでした。 – Mopork

関連する問題