2011-11-06 3 views
0
class PlayAreaView extends View{ 
    private static final String DEBUG_TAG = "PlayAreaView"; 
    private SeekBar sizeSlider; 
    private int xMin = 0; 
    private int xMax; 
    private int yMin = 0; 
    private int yMax; 

    private Rect rect; 
    private GestureDetector gestures; 
    private Paint p = new Paint(); 
    private int side = 50; 

    public PlayAreaView(Context context){ 
     super(context); 
     rect = new Rect(0,0,side,side); 
     p.setARGB(255, 255, 255, 255); 
     GestureListener listener = new GestureListener(this); 
     gestures = new GestureDetector(listener); 
     sizeSlider = (SeekBar) findViewById(R.id.seek); 
     //sizeSlider.setOnSeekBarChangeListener(listener); 
    } 

나는 Android에서 개발하는 데 어려움이 있으며 여기에 무슨 문제가 있는지 생각하는 데 어려움이 있습니다. 주석 처리 된 행에서 NullPointerException이 발생합니다. 저는 그것이 주요 활동이 아닌 수업에서 ViewById를 찾도록 요청하고 있기 때문에 그것이라고 믿습니다. 이것이 실제로 문제가되는 경우이 클래스에서 UI 요소에 어떻게 액세스 할 수 있습니까? 당신이 SeekBar를 것 같다 있기 때문에 당신이 설정 한대로setOnSeekBarChangeListener NullPointerException android

답변

1

, findViewById를 (R.id.seek)가 존재하지 않는 PlayAreaView, 내 R.id.seek 동일한 ID와 서브 뷰를 검색됩니다 메인 레이아웃. 당신이보기 내에서 SeekBar를 액세스해야하는 경우 예를 인스턴스화하는 동안

,

SeekBar sizeSlider; 

public PlayAreaView(Context context, SeekBar seekBar) { 
    super(context); 
    sizeSlider = seekBar; 
    ... 
    seekBar.setOnSeekBarChangeListener(...); 
} 

다음, 주요 활동

SeekBar sizeSlider = (SeekBar)findViewById(R.id.seek); 
PlayAreaView areaView = new PlayAreaView(this, sizeSlider); 

및 PlayAreaView에에에 대한 참조를 전달 PlaAreaView에서 인스턴스 변수 sizeSlider를 통해 SeekBar 인스턴스에 액세스 할 수 있습니다.