我想調用另一個片段的方法,但它不斷告訴我,我的TextViews的值爲空..?如何從另一個片段類訪問一個方法?
PLAYER1:
public class PlayerTurn1 extends Fragment {
TextView p1Name;
TextView p1Icon;
Button doneP1;
Button resetP1;
EditText row;
EditText column;
TicTacToeLayout myObject = new TicTacToeLayout();
ArrayList<String> player1;
Bundle extras = new Bundle();
int turn = 1;
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
extras = getArguments();
player1 = new ArrayList<String>(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佈局
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/frag2"
android:name="As2.packageTK.TicTacToeLayout"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
我試圖從主機活動調用方法之前,我發佈這個,但我有完全相同的錯誤。什麼是錯誤,如果兩個片段innerswitch彼此之間 – Morpheglus 2013-03-27 06:18:33