0

私はこのファイルを使用しています、色を選択するために、その素晴らしいダイアログ、私は次のコードを使用しています

public class Main extends Activity implements
        ColorPickerDialog.OnColorChangedListener {

    Button b;
    Context c = this;
    ColorPickerDialog.OnColorChangedListener cc;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                new ColorPickerDialog(c, cc, "tag", 16777215, 0).show();

            }
        });
    }

    @Override
    public void colorChanged(String key, int color) {
        Log.d("debug", "key is " + key + " color is " + color);

    }
}

私のmain.xml中にはボタンが1つだけあります。ボタンをクリックするとダイアログボックスが表示されますが、このコードは正常に機能していますが、色を選択するとaが表示されますNullPointerException。理由はわかりませんが、助けていただければ幸いです。よろしく

4

2 に答える 2

1

あなたの場合、

Context c = this;
ColorPickerDialog.OnColorChangedListener cc;

両方ともnull

new ColorPickerDialog(c, cc, "tag", 16777215, 0).show();

したがって、この行はNPEを引き起こします。

于 2012-06-22T12:20:26.437 に答える
0

onCreate私は自分のコードをこれでうまくいくように変更しました、私はこのように内部でonColorChangedListenerを作る必要があります

public class Main extends Activity  {
Button b;
OnColorChangedListener cc;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    cc=new OnColorChangedListener() {

        @Override
        public void colorChanged(String key, int color) {
            Log.d("tag", "key is " + key + " color is " + color);

        }
    };
    b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            new ColorPickerDialog(Main.this, cc, "tag", 16777215, 0).show();

        }
    });
}
}

参照

于 2012-06-22T12:45:19.747 に答える