2012-06-22 46 views
0

我用這file,選擇顏色,它的一個不錯的對話,我使用下面的代碼ColorPicker的android系統中的NullPointerException

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只有一個按鈕。 此代碼工作正常,當我點擊一個按鈕和對話框出現,但是當我選擇一種顏色NullPointerException即將到來,我不知道爲什麼,任何幫助將感恩。問候

回答

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(); 

     } 
    }); 
} 
} 

reference

1

在你的情況,

Context c = this; 
ColorPickerDialog.OnColorChangedListener cc; 

都是

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

所以,這一行的原因NPE ..

+0

哦!但是我會初始化'cc':S –

+0

我認爲'c'不是null,cc是null,但是我需要用它初始化它? –

+0

發佈您的完整代碼。而不是C使用Main.this和debuge你的代碼。 – user370305