2013-01-06 3 views
7

번호 선택 도구를 응용 프로그램에 통합하려고합니다. 액티비티에는 번호 선택 도구가있는 항목의 목록이 각각 표시됩니다. 사용자는 숫자 선택기를 사용하여 수량을 늘리거나 줄일 수 있습니다. 가격을 보여주는 TextView를 업데이트하고 싶습니다.숫자 선택기 위젯에 수신기 추가

이 작업을 시도 할 때 어려움에 처했습니다. 나는 간단한 프로젝트를 만들었고 사용자가 위젯을 클릭했지만 아무 소용이 없을 때 축배 메시지를 표시하려고 시도했다.

제 생각 엔 숫자 위젯이 클릭 리스너가 작동하지 않는 버튼처럼 취급되지 않습니다. 리스너 추가와 관련하여 조언을 부탁드립니다.

NumberPicker np; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    np = (NumberPicker)findViewById(R.id.numberPicker1); 
    np.setMaxValue(99); 
    np.setMinValue(0); 
    np.setValue(50); 

    np.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(v.getContext(), "Number selected", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+2

'(참) np.setClickable'당신이 원하는 모든 이벤트를 클릭하면. 그러나 번호 변경을 듣고 싶다면 [OnValueChangeListener] (http://developer.android.com/reference/android/widget/NumberPicker.OnValueChangeListener.html)를 사용하지 않으시겠습니까? –

답변

14

으로 볼 NumberPicker

의 현재 값의 변화를 통지에 NumberPicker.setOnValueChangedListener을 설정해야합니다 : 아래

내 코드입니다 Listener를 Picker으로 설정하면 액티비티는 피커 인터페이스 수신기를 구현해야합니다. (사실, 당신의 활동은 또한 익명의 내부 방법을 사용할 수 있습니다, 인터페이스를 구현하는 필수되지 않습니다 작동 무엇이든간에..) 활동에 따라서

: (나 같은) 새로운 안드로이드 개발자의

public class MainActivity extends Activity implements NumberPicker.OnValueChangeListener { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     NumberPicker np = (NumberPicker)findViewById(R.id.numberPicker1); 
     np.setMaxValue(99); 
     np.setMinValue(0); 
     np.setValue(50); 
     np.setOnValueChangedListener(this); 

    } 

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     Toast.makeText(this, "change", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Spot on! 매우 명확하고 잘 설명 된 대답, 감사합니다! – Javacadabra

+0

환영 : – Zyoo

+0

조각과 함께 작동하지 않습니까? – timberlake

2

는이 example 우리가 NumberPicker

에 대한 setOnValueChangedListener을 설정하는 방법
+0

링크가 작동하지 않습니다. – timberlake

9

, 활동 자체 은 수신기를 구현하는 데 필요한이 아닙니다. setOnValueChangedListener()에 전달하면됩니다.

이렇게하면 implements이 너무 많고 중복되는 숫자가 너무 많습니다. @Overrides입니다.

예 : 당신이해야 할 수도 있습니다

// Number Picker 
NumberPicker np = (NumberPicker) getView().findViewById(R.id.numberPicker1); 
np.setMinValue(0); 
np.setMaxValue(35); 

np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
    @Override 
    public void onValueChange(NumberPicker numberPicker, int i, int i2) { 

     Toast.makeText(this, "Value was: " + Integer.toString(i) + " is now: " + Integer.toString(i2), Toast.LENGTH_SHORT).show(); 

    } 
}); 
+0

을 사용하세요. 고맙습니다;) – deanpodgornik