我得到了 3 个片段,2 个是 player1 和 player2,一个是 tictactoelayout,一个基本上将所有这些片段连接在一起,即 TicTacToeGame。在我的每个播放器片段中,我都试图访问 TicTacToeGame 方法
public class PlayerTurn1 extends Fragment {
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.playerturn1, container, false);
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
extras = getArguments();
player1 = new ArrayList<String>(extras.getStringArrayList("player1"));
row = (EditText) getActivity().findViewById(R.id.rowP1);
column = (EditText) getActivity().findViewById(R.id.columnP1);
p1Name = (TextView) getActivity().findViewById(R.id.p1NameInfo);
p1Icon = (TextView) getActivity().findViewById(R.id.p1IconInfo);
doneP1 = (Button) getActivity().findViewById(R.id.doneP1);
resetP1 = (Button) getActivity().findViewById(R.id.resetP2);
setPlayer();
doneP1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(checkField() != false)
{
String rowValueStr = row.getText().toString();
String colValueStr = column.getText().toString();
int rowValueInt = Integer.parseInt(rowValueStr);
int colValueInt = Integer.parseInt(colValueStr);
myObject.playTicTacToe(rowValueInt, colValueInt);
myObject.whosTurn = 2;
callPlayer2Fragment();
}
}
});
}
}
这是我的 Player2 片段:
public class PlayerTurn2 extends Fragment{
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.playerturn2, container, false);
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
extras = getArguments();
player2 = new ArrayList<String>(extras.getStringArrayList("player2"));
p2Name = (TextView) getActivity().findViewById(R.id.p2NameInfo);
p2Icon = (TextView) getActivity().findViewById(R.id.p2IconInfo);
row = (EditText) getActivity().findViewById(R.id.rowP2);
column = (EditText) getActivity().findViewById(R.id.columnP2);
doneP2 = (Button) getActivity().findViewById(R.id.doneP2);
resetP2 = (Button) getActivity().findViewById(R.id.resetP2);
setPlayer();
doneP2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(checkField() != false)
{
String rowValueStr = row.getText().toString();
String colValueStr = column.getText().toString();
int rowValueInt = Integer.parseInt(rowValueStr);
int colValueInt = Integer.parseInt(colValueStr);
myObject2.playTicTacToe(rowValueInt, colValueInt);
myObject2.whosTurn = 1;
callPlayer1Fragment();
}
}
});
}
}
这是我在井字游戏中的方法:
public void playTicTacToe(int r, int c)
{
if(whosTurn == 1)
images[r-1][c-1].setText(player1.get(1));
else
images[r-1][c-1].setText(player2.get(1));
return;
}
这是日志猫:
03-26 15:11:31.770: E/AndroidRuntime(5632): java.lang.NullPointerException
03-26 15:11:31.770: E/AndroidRuntime(5632): at As2.packageTK.TicTacToeGame.playTicTacToe(TicTacToeGame.java:153)
03-26 15:11:31.770: E/AndroidRuntime(5632): at As2.packageTK.PlayerTurn1$1.onClick(PlayerTurn1.java:64)
第 64 行:
myObject.playTicTacToe(rowValueInt, colValueInt);
第 153 行:
images[r-1][c-1].setText("O");
任何想法如何解决这个问题?
编辑
TextView[][] images;
image1 = (TextView) this.findViewById(R.id.Image1);
image2 = (TextView) this.findViewById(R.id.Image2);
image3 = (TextView) this.findViewById(R.id.Image3);
image4 = (TextView) this.findViewById(R.id.Image4);
image5 = (TextView) this.findViewById(R.id.Image5);
image6 = (TextView) this.findViewById(R.id.Image6);
image7 = (TextView) this.findViewById(R.id.Image7);
image8 = (TextView) this.findViewById(R.id.Image8);
image9 = (TextView) this.findViewById(R.id.Image9);
images = new TextView[][]{ {image1, image2, image3},
{image4, image5, image6},
{image7, image8, image9} }
;