启动单击活动时Android应用程序崩溃
我想做个抽签游戏。当我点击其中一个框时,我得到了以下错误,最初,它工作了,但是当我开始开发它时,它突然停止了工作。如何调试此错误启动单击活动时Android应用程序崩溃,android,Android,我想做个抽签游戏。当我点击其中一个框时,我得到了以下错误,最初,它工作了,但是当我开始开发它时,它突然停止了工作。如何调试此错误 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.tres_en_ralla, PID: 3943 java.lang.IllegalStateException: Could not find method toque(View) in a parent or ancestor
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.tres_en_ralla, PID: 3943
java.lang.IllegalStateException: Could not find method toque(View) in a parent or ancestor Context for android:onClick attribute defined on view class androidx.appcompat.widget.AppCompatImageView with id 'b2'
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:436)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:393)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
我的主要活动是:
package com.example.tres_en_ralla;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.Gravity;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private int jugadores;
private Partida partida;
private int [] casillas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Iniciamos el array casillas que identifica cada casilla, y la almacena.
casillas = new int[9];
casillas[0] = R.id.a1;
casillas[1] = R.id.a2;
casillas[2] = R.id.a3;
casillas[3] = R.id.b1;
casillas[4] = R.id.b2;
casillas[5] = R.id.b3;
casillas[6] = R.id.c1;
casillas[7] = R.id.c2;
casillas[8] = R.id.c3;
}
//rescata los datos e inactiva los botones.
public void aJugar(View vista){
ImageView imagen;
//Limpiamos las casillas.
for (int c:casillas) {
imagen = (ImageView) findViewById((c));
imagen.setImageResource(R.drawable.casilla);
}
jugadores = 1;
if(vista.getId()==R.id.dosJug) {
jugadores = 2;
}
RadioGroup botones = findViewById(R.id.rdgDificultad);
int id = botones.getCheckedRadioButtonId();
id = 0;
int dificultad=0;
if(id==R.id.medio){
dificultad=1;
}else if (id==R.id.imposible){
dificultad=2;
}
partida = new Partida(dificultad);
((Button)findViewById(R.id.unJug)).setEnabled(false);
//setAlpha establece la transparencia a 0.
((RadioGroup) findViewById(R.id.rdgDificultad)).setAlpha(0);
((Button) findViewById(R.id.dosJug)).setEnabled(false);
}
//Rescata la casilla pulsada y se la pasa a marca().
private void toque(View miVista) {
if(partida==null){
return;
}
int cas = 0;
for (int i = 0; i < 9; i++) {
if (casillas[i] == miVista.getId()) {
cas = i;
break;
}
}
if(!partida.compruebaCasilla(cas)) {
return;
}
marca(cas);
partida.turno();
int cas_ia = partida.ia();
marca(partida.ia());
partida.turno();
}
//Establece la imagen de fondo.
private void marca(int casilla){
ImageView imagen;
imagen = (ImageView) findViewById(casillas[casilla]);
if(partida.getJugadores()==1){
imagen.setImageResource(R.drawable.circulo);
}else {
imagen.setImageResource(R.drawable.aspa);
}
}
}
package com.example.tres_en_ralla;
导入android.os.Bundle;
导入com.google.android.material.floatingactionbutton.floatingactionbutton;
导入com.google.android.material.snackbar.snackbar;
导入androidx.appcompat.app.appcompat活动;
导入androidx.appcompat.widget.Toolbar;
导入android.view.Gravity;
导入android.view.view;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.RadioGroup;
导入android.widget.Toast;
公共类MainActivity扩展了AppCompatActivity{
私家侦探;
私人党派;
卡西利亚斯私人酒店;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在阿尔马塞纳的卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚卡迪亚。
casillas=新整数[9];
casillas[0]=R.id.a1;
casillas[1]=R.id.a2;
casillas[2]=R.id.a3;
casillas[3]=R.id.b1;
casillas[4]=R.id.b2;
casillas[5]=R.id.b3;
casillas[6]=R.id.c1;
casillas[7]=R.id.c2;
casillas[8]=R.id.c3;
}
//请把我的手放在手上。
公共空间aJugar(视图视景){
ImageView imagen;
//Limpiamos las casillas。
用于(国际c:casillas){
imagen=(ImageView)findViewById((c));
imagen.setImageResource(R.drawable.casilla);
}
jugadores=1;
if(vista.getId()==R.id.dosJug){
jugadores=2;
}
放射组botones=findViewById(R.id.rdgDificultad);
int id=botone.getCheckedRadioButtonId();
id=0;
int-deficultad=0;
if(id==R.id.medio){
难度=1;
}else if(id==R.id.impossible){
难度=2;
}
partida=新partida(deficultad);
((按钮)findViewById(R.id.unJug)).setEnabled(false);
//setAlpha establece la transparencia a 0。
((放射组)findViewById(R.id.rdgDificultad)).setAlpha(0);
((按钮)findviewbyd(R.id.dosJug)).setEnabled(false);
}
//在马卡岛上,你可以看到一个脉冲。
私人void toque(查看miVista){
if(partida==null){
返回;
}
int-cas=0;
对于(int i=0;i<9;i++){
if(casillas[i]==miVista.getId()){
cas=i;
打破
}
}
如果(!compluebacisilla(cas)){
返回;
}
马卡(中科院),;
图诺党();
int cas_ia=partida.ia();
marca(partida.ia());
图诺党();
}
//丰多旅馆。
私人void marca(内卡西拉){
ImageView imagen;
imagen=(ImageView)findViewById(casillas[casilla]);
if(partida.getJugadores()==1){
imagen.setImageResource(R.drawable.circulo);
}否则{
imagen.setImageResource(R.drawable.aspa);
}
}
}
我的activity_main.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/fondo"
android:orientation="horizontal"
android:padding="@dimen/padding_pantalla"
tools:context=".MainActivity">
<Space
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_weight="0.5"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
style="@style/titulo"
android:text="@string/app_name" />
<Button
android:id="@+id/unJug"
style="@style/button"
android:layout_height="60dp"
android:layout_width="wrap_content"
android:text="@string/un_jugador" />
<RadioGroup
android:id="@+id/rdgDificultad"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/facil"
style="style/radio"
android:text="@string/facil" />
<RadioButton
android:id="@+id/medio"
style="style/radio"
android:text="@string/normal" />
<RadioButton
android:id="@+id/imposible"
style="style/radio"
android:text="@string/Imposible" />
</RadioGroup>
<Button
android:id="@+id/dosJug"
style="@style/button"
android:text="@string/dos_jugador" />
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_weight="0.5"/>
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:columnCount="3"
android:rowCount="3">
<ImageView
android:id="@+id/a1"
style="@style/casillas"
/>
<ImageView
android:id="@+id/c1"
style="@style/casillas"
/>
<ImageView
android:id="@+id/a2"
style="@style/casillas"
android:src= "@drawable/circulo"
/>
<ImageView
android:id="@+id/a3"
style="@style/casillas"
/>
<ImageView
android:id="@+id/c2"
style="@style/casillas"
android:src= "@drawable/circulo"
/>
<ImageView
android:id="@+id/c3"
style="@style/casillas"
/>
<ImageView
android:id="@+id/b1"
style="@style/casillas"
android:src= "@drawable/circulo"
/>
<ImageView
android:id="@+id/b2"
style="@style/casillas"
android:src= "@drawable/aspa"
/>
<ImageView
android:id="@+id/b3"
style="@style/casillas"
android:src= "@drawable/aspa"
/>
ç
</GridLayout>
</LinearLayout>
ç
Android组件无法定位toque
方法,因为它是私有的
将访问修饰符更改为public
:
public void toque(View miVista) { ...
这回答了你的问题吗?非常感谢ypu,这就是原因。。。。这真是一个愚蠢的理由…@ManuelLucas,发生在每个人身上。不客气。如果你接受这个答案,那会很有帮助。非常感谢。