Я хочу вызвать метод из другого фрагмента, но он продолжает сообщать мне, что значения моих TextViews равны нулю..?
Player1:
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();
}
}
});
}
Фрагмент игрока 2 — это точно такой же код, поэтому я не буду его добавлять.
Класс фрагмента TicTacToeLayout:
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);
}
}
Я просто придумал метод, чтобы попробовать и поджарить, просто чтобы убедиться, что в массиве что-то есть, и он сработал. Однако он что-то поджаривает только тогда, когда фрагмент создан. Каким-то образом после вызова метода myObject.play(rowValueInt, colValueInt, player1.get(1));
отладчик сообщает мне, что все значения моих изображений равны нулю.
Вот что говорит отладчик:
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)
В основном это происходит, когда я нажимаю кнопку «Готово». Предполагается, что когда игрок нажимает кнопку, во фрагменте TicTacToeLayout текстовое представление, расположенное в любой строке и столбце, которые ввел игрок, меняется на X или O.
строка, столбец и значок имеют соответствующие значения, но изображения после вызова объекта становятся нулевыми. есть идеи? Моя тема была закрыта, потому что, видимо, я не предоставил много информации, и администраторы разозлились, поэтому, если вам нужно что-то еще, просто скажите мне, я обновлю.
РЕДАКТИРОВАТЬ
вызов второго фрагмента игрока, расположенного в PlayerTurn1
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();
}
при нажатии кнопки «Готово» вызывается фрагмент PlayerTurn2, которому передаются аргументы из этого класса, но этот фрагмент заменяется.
Разметка XML
Подробнее здесь: https://stackoverflow.com/questions/156 ... ment-class
Как я могу получить доступ к методу из другого класса фрагмента? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1767474020
Anonymous
Я хочу вызвать метод из другого фрагмента, но он продолжает сообщать мне, что значения моих TextViews равны нулю..?
Player1:
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();
}
}
});
}
Фрагмент игрока 2 — это точно такой же код, поэтому я не буду его добавлять.
Класс фрагмента TicTacToeLayout:
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);
}
}
Я просто придумал метод, чтобы попробовать и поджарить, просто чтобы убедиться, что в массиве что-то есть, и он сработал. Однако он что-то поджаривает только тогда, когда фрагмент создан. Каким-то образом после вызова метода myObject.play(rowValueInt, colValueInt, player1.get(1));
отладчик сообщает мне, что все значения моих изображений равны нулю.
Вот что говорит отладчик:
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)
В основном это происходит, когда я нажимаю кнопку «Готово». Предполагается, что когда игрок нажимает кнопку, во фрагменте TicTacToeLayout текстовое представление, расположенное в любой строке и столбце, которые ввел игрок, меняется на X или O.
строка, столбец и значок имеют соответствующие значения, но изображения после вызова объекта становятся нулевыми. есть идеи? Моя тема была закрыта, потому что, видимо, я не предоставил много информации, и администраторы разозлились, поэтому, если вам нужно что-то еще, просто скажите мне, я обновлю.
[b]РЕДАКТИРОВАТЬ[/b]
вызов второго фрагмента игрока, расположенного в PlayerTurn1
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();
}
при нажатии кнопки «Готово» вызывается фрагмент PlayerTurn2, которому передаются аргументы из этого класса, но этот фрагмент заменяется.
Разметка XML
Подробнее здесь: [url]https://stackoverflow.com/questions/15652825/how-can-i-access-a-method-from-another-fragment-class[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия