【发布时间】:2019-11-03 18:02:37
【问题描述】:
我正在尝试创建井字游戏,当我尝试通过按下按钮再次玩游戏时,应用程序崩溃并且不刷新表格。除此之外,工作正常。但是我找不到这次崩溃的错误所在。这是我的按钮的代码。
public void playAgain(View view) {
gameIsActive = true;
LinearLayout layout = (LinearLayout) findViewById(R.id.playAgainLayout);
layout.setVisibility(View.INVISIBLE);
activePlayer = 0;
for (int i = 0; i < gameState.length; i++) {
gameState[i] = 2;
}
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayout);
for (int i = 0; i < gridLayout.getChildCount(); i++) {
((ImageView) gridLayout.getChildAt(i)).setImageResource(0);
}
}
我的按钮属性
<Button
android:id="@+id/playAgain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:onClick="playAgain"
android:text="PlayAgain" />
2019-11-03 15:43:41.534 19463-19463/com.example.connect3game E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.connect3game, PID: 19463
java.lang.IllegalStateException: Could not find method playAgain(View) in a parent or ancestor Context for android:onClick attribute defined on view class androidx.appcompat.widget.AppCompatButton with id 'playAgainButton'
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:424)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:381)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2019-11-03 15:43:41.556 19463-19463/com.example.connect3game I/Process: Sending signal. PID: 19463 SIG: 9
【问题讨论】:
-
java 之于 javascript 什么汽车之于地毯,请不要在您的问题中添加不相关的标签,javascript 似乎与这个特定问题没有任何关系
-
有
android:id="@+id/playAgainButton"的按钮是触发错误的按钮,而不是您在上面发布的那个按钮 -
这个错误基本上告诉你,一旦你点击id为
playAgainButton的按钮,它就找不到方法playAgain,可能你的活动类和布局与其内容不一致。