私は 3 つのフラグメントを取得しました。2 つは player1 と player2 で、1 つは tictactoelayout で、もう 1 つは基本的にそれらすべてのフラグメントを連結した 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();
}
}
});
}
}
TicTacToeGame にある私のメソッドは次のとおりです。
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} }
;