3 열 3 행 격자 레이아웃이 있습니다. 첫 번째 행과 세 개의 모든 열에 대해 선형 레이아웃이 있고 다음 두 행에 대해 마찬가지로 선형 레이아웃이 있습니다. 각 선형 레이아웃에는 각 선형 레이아웃에 각각 0,1,2 열이있는 3 개의 이미지가 있습니다. "다시 재생"버튼을 클릭하면 이미지를 설정 해제하고 싶습니다. 그러나 현재 이렇게하는 동안 오류가 발생합니다. 다음과 같이 내 코드는 다음과 같습니다 activity_main.xml 다음과 같이격자 레이아웃 내부 선형 레이아웃 내부 격자 재설정
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context="com.example.user.tic_tac_toe.MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:background="#ccc"
android:padding="15dp"
android:visibility="visible"
android:id="@+id/playAgainLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="TIC-TAC-TOE"
android:gravity="center"
android:ems="10"
android:id="@+id/winnerMessage"
android:textSize="30sp" />
<Button
android:text="Play Again"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/playAgainButton"
android:gravity="center"
android:background="@color/colorAccent"
android:onClick="playAgain"
android:visibility="invisible"/>
</LinearLayout>
<GridLayout
android:layout_width="wrap_content"
android:columnCount="3"
android:rowCount="3"
android:background="@drawable/board"
android:id="@+id/grid"
android:layout_height="360dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_weight="1"
android:visibility="visible"
android:id="@+id/temp"
android:layout_columnSpan="3"
>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView1"
android:layout_row="0"
android:layout_column="0"
android:onClick="dropIn"
android:tag="0"
/>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1.01"
android:padding="25dp"
android:id="@+id/imageView2"
android:layout_row="0"
android:layout_column="1"
android:onClick="dropIn"
android:tag="1"
/>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView3"
android:layout_row="0"
android:layout_column="2"
android:onClick="dropIn"
android:tag="2"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_weight="1"
android:visibility="visible"
android:id="@+id/temp3"
android:layout_columnSpan="3"
>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView4"
android:layout_row="1"
android:layout_column="0"
android:onClick="dropIn"
android:tag="3"
/>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView5"
android:layout_row="1"
android:layout_column="1"
android:onClick="dropIn"
android:tag="4"/>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView6"
android:layout_row="1"
android:layout_column="2"
android:onClick="dropIn"
android:tag="5"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="120dp"
android:visibility="visible"
android:id="@+id/temp2"
android:layout_columnSpan="3"
>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView7"
android:layout_row="2"
android:layout_column="0"
android:onClick="dropIn"
android:tag="6"
/>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView8"
android:layout_row="2"
android:layout_column="1"
android:onClick="dropIn"
android:tag="7"
/>
<ImageView
android:layout_height="120dp"
android:layout_width="0dp"
android:layout_weight="1"
android:padding="25dp"
android:id="@+id/imageView9"
android:layout_row="2"
android:layout_column="2"
android:onClick="dropIn"
android:tag="8"
/>
</LinearLayout>
</GridLayout>
</RelativeLayout>
내 playAgain 기능은 다음과 같습니다
public void playAgain(View view){
active = true;
Button button = (Button)findViewById(R.id.playAgainButton);
button.setVisibility(View.INVISIBLE);
TextView text = (TextView)findViewById(R.id.winnerMessage);
text.setText("TIC-TAC-TOE");
activePlayer = 0;
for(int i=0; i<currentState.length; i++){
currentState[i] = 2;
}
//changing the image of imageviews in grid layout
GridLayout grid = (GridLayout)findViewById(R.id.grid);
grid.removeAllViews();
for(int i=0; i<grid.getChildCount(); i++){
((ImageView) grid.getChildAt(i)).setImageResource(0);
}
}
PS : 나는 선형 레이아웃을 제거하고 단지 내부 imageviews를 넣을 경우 내 프로그램이 실행되고 괜찮습니다 그리드 레이아웃 선형 조명 내부의 이미지를 리셋하는 동안 예외가 발생하는 것 같습니다. 이 줄에 오류가 발생했습니다.
((ImageView) grid.getChildAt(i)).setImageResource(0);