在Android中动态更改Paint对象的颜色

时间:2012-03-16 09:31:06

标签: android

我有一个选项Activity,我使用RadioButton选择颜色。默认情况下,White颜色设置为android:checked="true"。现在,当我到达Canvas时,我需要根据选择的Paint动态更改RadioButton颜色。 这是我尝试过的代码:

            String radioButtonSelected = "";
            switch (checkedRadioButton) {
              case R.id.CheckRed : radioButtonSelected = "Red";
                                              break;
              case R.id.CheckBlue : radioButtonSelected = "Blue";
                                          break;
              case R.id.CheckWhite : radioButtonSelected = "White";
                                          break;
            }
            Intent i = new Intent(HandwritingRecognitionOptionTab.this,HandwritingRecognitionCanvas.class);
            i.putExtra("setColor",radioButtonSelected);
            //startActivity(i); // because I don't want to start the activity immediately after this

Canvas的课程中:

        Bundle getValue = getIntent().getExtras();
        drawColor = getValue.getString("setColor");
        if(drawColor.equals("White"))
            intColor = 1;
        if(drawColor.equals("Red"))
            intColor = 2;
        if(drawColor.equals("Blue"))
            intColor = 3;


        mPaint = new Paint();
        mPaint.setDither(true);
        mPaint.setColor(Color.WHITE);
        if(intColor == 1)
            mPaint.setColor(Color.WHITE);
        if(intColor == 2)
            mPaint.setColor(Color.RED);
        if(intColor == 3)
            mPaint.setColor(Color.BLUE);

但只要NullPointerException Activity开始,我就会收到Canvas。重要的是要注意,默认情况下,白色应该是颜色。此外,这不会持久存储它吗?我应该查看SharedPreferences吗?

1 个答案:

答案 0 :(得分:1)

在阅读完评论后,看起来你没有使用给定的Intent开始其他活动,因此NullPointerException因为Bundle在下一个活动中不会包含相同的字符串。

您可以选择停用以下选项:

1> Shared Prefrences (As highlighted by you)
2> Some DB entry.
3> Some file storage
4> Singleton pattern

但对我来说,最好的一个就是共同的偏好。您可能还想查看此link以获取详细信息