사용자가 숫자 선택기 위젯에서 값을 변경할 때 TextView에 표시된 값을 업데이트하려고합니다. com.example.waitron5에서숫자 선택기를 사용하여 TextView를 업데이트하려고 시도했습니다.
java.lang.NullPointerException이 :
나는 숫자 피커 설정하고 나는 다음과 같은 오류를 얻을 텍스트 뷰의 .setText() 메서드를 호출 할 때 그러나 제대로 작동합니다. MenuItemArrayAdapter.onValueChange (MenuItemArrayAdapter.java:68는) 다음
코드는 오류가 MenuItemArrayAdapter 클래스에서 발생하는 것으로 보인다 곳에 대응 :
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
Toast.makeText(this.getContext(), "Change: " + picker.getValue(), Toast.LENGTH_SHORT).show();
//if oldVal > newVal increment price
price.setText("xyz");
//if oldVal < newVal decrement price
}
청취자가 제대로 작동하는지 테스트하기 위해 Toast 메시지를 입력했습니다. 그런 다음 setText() 메서드를 추가했지만 오류가 발생했습니다.
문제에 대한 도움을 주시면 감사하겠습니다. 나는 MenuItemArrayAdapter 클래스의 상단에있는 텍스트 뷰를 선언 :
private TextView price;
참고 : 수 선택기는 목록의 각보기에 포함된다. 그래서 MenuItemAdapter 클래스가 있습니다. 문제가 잘못된 위치에서 textView를 업데이트하는 것과 관련이 있습니까?
다음은 MenuItemAdapter 클래스의 getView() 메소드입니다.
public View getView(final int position, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.menuitem_row, null);
}
//assign values to view
MenuItem item = this.menuItems.get(position);
TextView nameView = (TextView) v.findViewById(R.id.item_name);
TextView priceView = (TextView) v.findViewById(R.id.item_price);
nameView.setText(item.getName() + " ");
priceView.setText("€"+ String.valueOf(item.getPrice()));
price = (TextView)v.findViewById(R.id.price);
//number picker
np = (NumberPicker)v.findViewById(R.id.numpick);
np.setMaxValue(99);
np.setMinValue(0);
np.setValue(0);
np.setOnValueChangedListener(this);
return v;
}
'가격'에 값을 할당 한 적이 있습니까? – Henry
기본적으로 나는 XML 레이아웃 파일에서 android : text = ""를 사용하여 "0.00 €"값을 할당했습니다. – Javacadabra
'setContentView' 다음에'price' 텍스트 뷰를 초기화해야합니까? –