Ich habe ein Rasterlayout mit 3 Spalten und 3 Zeilen. Für die erste Zeile und alle drei Spalten habe ich ein lineares Layout und für die nächsten zwei Zeilen habe ich ein lineares Layout. Jedes lineare Layout hat 3 Bilder mit Spalten 0,1,2 in jedem linearen Layout. Ich möchte das Bild unscharf stellen, sobald der "Wieder abspielen" -Knopf angeklickt wurde. Momentan erhalte ich jedoch einen Fehler. Mein Code ist wie folgt: activity_main.xmlZurücksetzen der Raster innerhalb linearer Layouts innerhalb des Rasterlayouts
<?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>
Meine playAgain Funktion ist wie folgt:
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: Mein Programm läuft ist in Ordnung, wenn ich die linearen Layouts entfernen und nur nach innen setzen imageviews das Rasterlayout. Ich nehme an, dass dies eine Ausnahme beim Zugriff auf das Bild innerhalb des linearen Layouts beim Zurücksetzen ist. Fehler bei dieser Zeile auftretenden
((ImageView) grid.getChildAt(i)).setImageResource(0);