nabuko
nabuko

Reputation: 39

Error on changing button's text color to default?

I have a button with set color code:

buttonClicked.setTextColor(Color.GRAY);

Now when I finish my timer, the text of all buttons reset to something else, so I need that text to go back to default. I tried this but I get error (i placed a comment near the end of my code for that error):

final OnClickListener clickListener = new OnClickListener() {

            private Button buttonClicked;
            private int brojacKlikova = 0;

            public void onClick(View v) {
                brojacKlikova++;
                if (brojacKlikova < 16) {

                Button button = (Button) v;
                button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333));

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;
                } else {
                    // second button is clicked
                    if (buttonClicked.getTag().equals(button.getTag())) {
                        button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                        buttonClicked.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                        buttonClicked.setEnabled(false);
                        button.setEnabled(false);
                        counter = counter + 5;
                        score.setText("Poeni: " + counter);
                    } else {
                        buttonClicked.setEnabled(false);
                        buttonClicked.setTextColor(Color.GRAY);
                        buttonClicked.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFCC99));
                        button.getBackground().clearColorFilter();
                    }
                    buttonClicked = null;
                }
                }else{
                buttonClicked = null;
                buttonClicked.setTextColor(Color.WHITE); //<--- here I get error
                brojacKlikova = 0;
                brojacVremena.cancel();
                mHandler.postDelayed(mLaunchTask,2200);
         }
            }
     };

How to reset my button's text color to default?

Here's logcat:

03-28 23:59:29.357: W/dalvikvm(27918): threadid=1: thread exiting with uncaught exception (group=0x40018560)
03-28 23:59:29.467: E/AndroidRuntime(27918): FATAL EXCEPTION: main
03-28 23:59:29.467: E/AndroidRuntime(27918): java.lang.NullPointerException
03-28 23:59:29.467: E/AndroidRuntime(27918):    at rs.androidaplikacije.spojnice.Spojnice$1.onClick(Spojnice.java:77)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at android.view.View.performClick(View.java:2506)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at android.view.View$PerformClick.run(View.java:9112)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at android.os.Handler.handleCallback(Handler.java:587)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at android.os.Handler.dispatchMessage(Handler.java:92)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at android.os.Looper.loop(Looper.java:130)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at android.app.ActivityThread.main(ActivityThread.java:3835)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at java.lang.reflect.Method.invokeNative(Native Method)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at java.lang.reflect.Method.invoke(Method.java:507)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
03-28 23:59:29.467: E/AndroidRuntime(27918):    at dalvik.system.NativeStart.main(Native Method)
03-28 23:59:31.167: I/Process(27918): Sending signal. PID: 27918 SIG: 9

Upvotes: 0

Views: 170

Answers (1)

Simon Dorociak
Simon Dorociak

Reputation: 33505

buttonClicked = null;
buttonClicked.setTextColor(Color.WHITE); 

Problem is here. You are assigned button to NULL and then you call property on it. This always throw NPE. Solution is to remove first line and it should work.

Upvotes: 2

Related Questions