Как я могу получить доступ к методу из другого класса фрагментов?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как я могу получить доступ к методу из другого класса фрагментов?

Сообщение Anonymous »

Я хочу вызвать метод из другого фрагмента, но он продолжает сообщать мне, что значения моих текстовых обзоров являются null ..? < /p>

player1: < /p>

public class PlayerTurn1 extends Fragment {

TextView p1Name;
TextView p1Icon;
Button doneP1;
Button resetP1;
EditText row;
EditText column;
TicTacToeLayout myObject = new TicTacToeLayout();
ArrayList player1;
Bundle extras = new Bundle();
int turn = 1;

public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

extras = getArguments();

player1 = new ArrayList(extras.getStringArrayList("player1"));

Toast.makeText(getActivity(), player1.get(0), Toast.LENGTH_LONG).show();//Name of the player
Toast.makeText(getActivity(), player1.get(1), Toast.LENGTH_LONG).show();//Icon chosen by the player

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)
{
int rowValueInt = Integer.parseInt(row.getText().toString());
int colValueInt = Integer.parseInt(column.getText().toString());

myObject.play(rowValueInt, colValueInt, player1.get(1));
callPlayer2Fragment();

}

}
});
}
< /code>

фрагмент игрока 2 точно такой же код, поэтому я не буду его потрудиться.public class TicTacToeLayout extends Fragment {

TextView image1, image2, image3, image4, image5, image6, image7, image8, image9;
TextView[][] images;

public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.tictactoe_layout, container, false);
}

public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

image1 = (TextView) getActivity().findViewById(R.id.Image1);
image2 = (TextView) getActivity().findViewById(R.id.Image2);
image3 = (TextView) getActivity().findViewById(R.id.Image3);
image4 = (TextView) getActivity().findViewById(R.id.Image4);
image5 = (TextView) getActivity().findViewById(R.id.Image5);
image6 = (TextView) getActivity().findViewById(R.id.Image6);
image7 = (TextView) getActivity().findViewById(R.id.Image7);
image8 = (TextView) getActivity().findViewById(R.id.Image8);
image9 = (TextView) getActivity().findViewById(R.id.Image9);

images = new TextView[][]{ {image1, image2, image3},
{image4, image5, image6},
{image7, image8, image9} };

toast();
}

public void toast()
{
Toast.makeText(getActivity(), images[0][0].getText().toString(), Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), images[0][1].getText().toString(), Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), images[0][2].getText().toString(), Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), images[1][0].getText().toString(), Toast.LENGTH_LONG).show();
}

public void play(int row, int column, String icon)
{
images[row-1][column-1].setText(icon);
}

}
< /code>

Я только что сделал метод, чтобы попытаться поджаривать, чтобы быть уверенным, что в массиве есть что -то, и это сработало. Тем не менее, это тостает что -то только тогда, когда создается фрагмент. Каким -то образом после метода вызовать myobject.play (rowvalueint, colvalueint, player1.get (1)); < /code>
отладчик говорит мне, что все значения моих изображений равны нулю.this TicTacToeLayout (id=830016401072)
image1 null
image2 null
image3 null
image4 null
image5 null
image6 null
image7 null
image8 null
image9 null
images null

row 1
column 2
icon "O" (id=830016398920)
< /code>

Это в основном происходит, когда я нажимаю кнопку Done. Предполагается, что игрок нажимает кнопку, в фрагменте tictactoelayout, TextView, расположенный в любой строке и столбце, введенный игрок изменяется в X или O.
ряд, столбец и значок, все имеют соответствующее значение, но изображения в конечном итоге были нулевы после вызова объекта. Есть идеи? Моя тема была закрыта, потому что, очевидно, я не предоставил много информации, и администраторы были разозлены, поэтому, если вам нужно что -то еще, просто скажите мне, что я обновлю.public void callPlayer2Fragment()
{
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment Player2Frag = new PlayerTurn2();
Player2Frag.setArguments(extras);
ft.replace(R.id.fragment_container, Player2Frag);
ft.commit();
}
< /code>

Когда нажата кнопка «Готово», фрагмент Playerturn2 вызывается и передает аргументы из этого класса, но этот фрагмент заменяется.









Подробнее здесь: https://stackoverflow.com/questions/156 ... ment-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»