아직 NPE를 받고 있지만 이제는 내 onCreate()에서 가져 왔습니다. 버튼을 제거하면 모든 것이 잘 작동합니다. 여기 NPE (편집 됨) 받기
(각 테이블 행은 별도의 XMLS 출신)가 XML입니다 : 여기@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.doneP1:
checkTurn();
break;
case R.id.doneP2:
checkTurn();
break;
case R.id.resetP1:
break;
case R.id.resetP2:
break;
}
}
가있다
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tictactoegame);
/*doneP1 = (Button) this.findViewById(R.id.doneP1);
doneP2 = (Button) this.findViewById(R.id.doneP2);
resetP1 = (Button) this.findViewById(R.id.resetP1);
resetP2 = (Button) this.findViewById(R.id.resetP2);
checkTurn(); //starts the game
//buttons
doneP1.setOnClickListener(this);
doneP2.setOnClickListener(this);
resetP1.setOnClickListener(this);
resetP2.setOnClickListener(this);*/ //commented out
}
및 외부에서 onCreate : 여기
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp" >
<Button
android:id="@+id/doneP1"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="Done" />
<Button
android:id="@+id/resetP1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset" />
</TableRow>
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp" >
<Button
android:id="@+id/doneP2"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="Done" />
<Button
android:id="@+id/resetP2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset" />
</TableRow>
코드입니다 체크 아웃
여기
가 changelayout입니다 : 여기에 로그 캣
을 것public void changeLayout(int turn) { FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragment_container); FragmentTransaction ft; if(turn == 1) //if its player 1's turn { doneP1 = (Button) this.findViewById(R.id.doneP1); resetP1 = (Button) this.findViewById(R.id.resetP1); doneP1.setOnClickListener(this); resetP1.setOnClickListener(this); if(fragment == null) //checks wether the current framelayout contains a fragment or not { ft = fm.beginTransaction(); ft.add(R.id.fragment_container, new PlayerTurn1()); ft.commit(); //setPlayer1(); } else { ft = fm.beginTransaction(); ft.replace(R.id.fragment_container, new PlayerTurn1()); ft.commit(); } } else { doneP2 = (Button) this.findViewById(R.id.doneP2); resetP2 = (Button) this.findViewById(R.id.resetP2); doneP2.setOnClickListener(this); resetP2.setOnClickListener(this); if(fragment == null) { ft = fm.beginTransaction();; ft.add(R.id.fragment_container, new PlayerTurn2()); ft.commit(); //setPlayer2(); } else { ft = fm.beginTransaction();; ft.replace(R.id.fragment_container, new PlayerTurn2()); ft.commit(); } } }
을 (EDIT? 새로운 changeLayout, 나는 그냥 방법하지만 여전히 아무런 영향을 미치지 내부의 각 버튼을 다시 초기화, 나는 바로 그 일을하고있다)와
03-24 07 : 51 : 55.954 : E/AndroidRuntime (5092) : 원인 : java.lang.NullPointerException 03-24 07 : 51 : 55.954 : E/AndroidRuntime (5092) : 에서 As2.packageTK.TicTacToeGame .onCreate (TicTacToeGame.java:88)
,451,515,
라인 (88)은 : 지금 약 4 시간 동안이 작업을 봤는데 난 여전히 간단한 문제를 해결할 수 없습니다
doneP1.setOnClickListener(this);
. 머리가 졸졸 빠져서 정말 피곤합니다. 잠자기 전에이 문제를 해결하고 싶으므로 빠른 응답을 부탁드립니다. 나는 나의 문제를 깨끗이 닦았다. .. 아무것도. 모든 것이 잘 보인다하지만 ... NPE는 항상에 파산한다.
plz 또한 checkTurn()을 추가하십시오. 질문이 –
인 코드를 추가했습니다. 임 코드가 맞다는 것이 확실하지만 버튼의 코드를 제거 할 때마다 작동합니다.- – Morpheglus
@ user2203939 레이아웃 파일을 저장하고 정리하고 프로젝트를 다시 빌드했는지 다시 한번 확인하고 여전히 오류? – Tushar