홈>
단어와 번역이 일치하는 언어 게임 조각을 만들고 있습니다. 이전에 클릭 한 버튼을 저장해야하며 다른 버튼을 클릭 한 후 비교하고 보이지 않는 경우 일치하는지 확인하십시오.
그러나 오류가 발생합니다 :
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.Button.getText()' on a null object reference
String text = buf.getText().toString();
라인에서
모든 버튼은 이전에 정의되었습니다.
@Override
public void onClick(View v) {
if (button_prev != 9) {
if (v.getId() != button_prev) {
Button buf = (Button) v.findViewById(button_prev);
String text = buf.getText().toString();
if (book_array.indexOf(text) - book_array.indexOf((String) ((Button) v).getText()) != 0) {
// book_array obj contains word and translating
i--;
v.findViewById(v.getId()).setVisibility(View.INVISIBLE);
v.findViewById(button_prev).setVisibility(View.INVISIBLE);
}
}
}
switch (v.getId()) {
// Storage the previously clicked the button in button_prev
case R.id.button1:
button_prev = Button_1.getId();
// button_prev = R.id.button1;
break;
case R.id.button2:
button_prev = Button_2.getId();
break;
case R.id.button3:
button_prev = Button_3.getId();
break;
case R.id.button4:
button_prev = Button_4.getId();
break;
case R.id.button5:
button_prev = Button_5.getId();
break;
case R.id.button6:
button_prev = Button_6.getId();
break;
case R.id.button7:
button_prev = Button_7.getId();
break;
case R.id.button8:
button_prev = Button_8.getId();
break;
default:
break;
어쩌면 누군가 코드를 고칠 수 있을까요? 클릭 한 버튼을 저장하는 올바른 방법이 있습니까?
- 답변 # 1
- 답변 # 2
널 포인터 오류는 조각 재생의 결과 일 수 있으며, 이로 인해 button_prev 값이 유효하지 않습니다. button_prev의 초기 값이 그 이유 일 수 있습니다.
findViewById는 시간이 많이 걸리는 기능입니다. 뷰 바인딩은 onCreate ()에서 한 번만 처리해야합니다.
MVC, MVP 또는 MVVM을 사용하는 것이 좋습니다. 게임 로직을 설명하는 모델을 사용하십시오. 데이터 변경에 집중하면 UI를 변경해야합니다.
- 답변 # 3
액티비티 또는 프래그먼트에서 button_prev를 필드로 선언하고 getter 및 setter를 사용하여 onclick 내에서 액세스하십시오.
관련 자료
- javascript - 이전 페이지에서 버튼을 클릭 한 경우에만 리디렉션
- javascript - 확인란을 클릭하지 않은 경우 버튼 비활성화
- javascript - 버튼을 클릭하면 클릭 한 카드의 내용 만 숨기고 다른 카드에는 영향을 미치지 않고 표시하고 싶습니다
- javascript - 페이지를 새로 고치지 않고 버튼 클릭 후 로컬 스토리지의 내용을 표시하려면 어떻게합니까?
- javascript - 다음 버튼을 클릭 할 때 남은 항목 세트를 배열로 표시하는 방법은 무엇입니까?
- javascript - 단추를 처음 두 양식을 지우고 다시 클릭하면 마지막 양식을 지우려면 어떻게합니까?
- python - 버튼을 for-loop로 만든 경우 버튼을 클릭했을 때 버튼을 삭제하는 방법은 무엇입니까?
- arrays - 버튼을 클릭하면 데이터 목록 표시
- javascript - 제출 된 버튼 속성 값을 올바르게 전달하여 제출 이벤트를 형성하는 방법은 무엇입니까?
- java - 버튼 클릭 기능을 여러 번 클릭하려면 어떻게해야합니까?
- html - 클릭 한 버튼에서 루프에서 실행중인 요소 ID를 루프 외부에 배치하는 방법?
- jquery를 사용하여 laravel에서 버튼을 클릭했을 때 foreach 내에서 배열의 값 인덱스를 얻는 방법
- javascript - mdc - 브라우저의 뒤로 버튼을 클릭하면 draweropen이 초기화되지 않습니다
- c# - 클릭 한 버튼을위한 xamarin OnPlatform
- php - foreach 루프에서 변수를 정의하는 방법 (단추를 클릭 할 때만)
- java - 로그인 버튼을 클릭해도 앱이 계속 충돌합니다
- c# - BarcodeDetector는 버튼을 클릭 할 때만 스캔해야합니다
- javascript - 클릭 할 때 버튼의 색상을 변경하고 다른 버튼을 클릭 할 때 원래 색상으로 다시 변경하는 방법은 무엇입니까?
- reactjs - React?에서 버튼을 클릭 할 때마다 상태 변경?
- R shiny - r 반짝임 - 반짝이는 모듈 기능 안에서 마지막으로 클릭 한 버튼 id
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
lastClicked보기를 저장하기 위해 다음과 같이 lastclicked보기에 대한 POJO를 선언 할 수 있습니다.
이제 어떤 버튼을 클릭하면 setView 메소드를 사용하여 LastClickedView 내부의 뷰 객체를 업데이트하고 마지막으로 클릭 한 버튼이 무엇인지 알아야 할 때 모든 ID가있는 스위치 문을 작성합니다. 작업을 수행하십시오.