Как решить «Не удалось выполнить метод для Android: onClick»Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как решить «Не удалось выполнить метод для Android: onClick»

Сообщение Anonymous »

Я пытаюсь создать приложение для викторины по географии, но у меня постоянно возникает эта проблема.
Это ошибка, которую я получаю от logcat. Первая страница открывается, но как только я нажимаю кнопку "Пуск", приложение закрывается.

FATAL ИСКЛЮЧЕНИЕ: main

Процесс: com.example.hangilkebu, PID: 29267

java.lang.IllegalStateException: Не удалось выполнить метод для
android:onClick

at
androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:473)
at android.view.View.performClick(View.java:8160)

at android.view.View.performClickInternal(View.java:8137)

at android.view.View.access$3700(View.java:888)

at android.view.View$PerformClick.run(View.java:30236)

at android.os.Handler.handleCallback(Handler.java:938)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loop(Looper.java:246)

at android.app.ActivityThread.main(ActivityThread.java:8595)

at java.lang.reflect.Method.invoke(Native Method)

at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

Вызвано: java.lang.reflect.InvocateTargetException

в java.lang.reflect.Method.invoke(собственный метод)

в
androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:468)
в android.view.View.performClick(View.java:8160) 

at android.view.View.performClickInternal(View.java:8137) 

at android.view.View.access$3700(View.java:888) 

at android.view.View$PerformClick.run(View.java:30236) 

at android.os.Handler.handleCallback(Handler.java:938) 

at android.os.Handler.dispatchMessage(Handler.java:99) 

at android.os.Looper.loop(Looper.java:246) 

at android.app.ActivityThread.main(ActivityThread.java:8595) 

at java.lang.reflect.Method.invoke(Native Method) 

at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) 

Вызвано: android.content.ActivityNotFoundException: невозможно найти
явный класс активности
{com.example.hangilkebu/com.example.hangilkebu.OyunBasladi}; Объявили ли вы
это действие в своем AndroidManifest.xml?

at
android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2078)
at
android.app.Instrumentation.execStartActivity(Instrumentation.java:1727)
at android.app.Activity.startActivityForResult(Activity.java:5377)

at
androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:728)
at android.app.Activity.startActivityForResult(Activity.java:5335)

at
androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:709)
at android.app.Activity.startActivity(Activity.java:5721)

at android.app.Activity.startActivity(Activity.java:5674)

at
com.example.hangilkebu.MainActivity.startGame(MainActivity.java:21)

at java.lang.reflect.Method.invoke(Native Method) 

at
androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:468) 
в android.view.View.performClick(View.java:8160) 

в android.view.View.performClickInternal(View.java:8137) 

at android.view.View.access$3700(View.java:888) 

at android.view.View$PerformClick.run(View.java:30236) 

at android.os.Handler.handleCallback(Handler.java:938) 

at android.os.Handler.dispatchMessage(Handler.java:99) 

в android.os.Looper.loop(Looper.java:246) 

в android.app.ActivityThread.main(ActivityThread.java:8595) 

в java.lang.reflect.Method.invoke(Native Метод) 

at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

Main Действия
Эта страница открывается при запуске приложения. Думаю, здесь может быть ошибка?
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void startGame (View view){
Intent intent = new Intent(MainActivity.this, OyunBasladi.class);
startActivity(intent);
finish();
}
}

Начать игру
Это та часть, где происходит сбой. Я нажимаю кнопку «Воспроизвести» на первой странице, и она должна привести меня сюда. Возможно, в этой части есть недостаток.
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class OyunBasladi extends AppCompatActivity {
TextView tvTimer;
TextView tvResult;
ImageView ivShowImage;
HashMap map = new HashMap();
ArrayList techList = new ArrayList();
int index;
Button btn1, btn2, btn3, btn4;
TextView tvPoints;
int points;
CountDownTimer countDownTimer;
long millisUntilFinished;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_soru1);
tvTimer = findViewById(R.id.tvTimer);
tvResult = findViewById(R.id.tvResult);
ivShowImage = findViewById(R.id.ivShowImage);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
tvPoints = findViewById(R.id.tvPoints);

index = 0;

techList.add("Çin");
techList.add("Türkiye");
techList.add("Rusya");
techList.add("D.Kongo Cumhuriyeti");
techList.add("Mısır");
techList.add("Kazakistan");
techList.add("St. Lucia");
techList.add("Trinidad ve Tobago");
techList.add("İsviçre");
techList.add("Lüksemburg");
techList.add("Tonga");
techList.add("Filipinler");
techList.add("Guyana");
techList.add("Guatemala");
techList.add("ABD");
techList.add("Kanada");
techList.add("Peru");
techList.add("Burundi");

map.put(techList.get(0), R.drawable.cin);
map.put(techList.get(1), R.drawable.turkiye);
map.put(techList.get(2), R.drawable.rusya);
map.put(techList.get(3), R.drawable.dkongocumhuriyeti);
map.put(techList.get(4), R.drawable.misir);
map.put(techList.get(5), R.drawable.kazakistan);
map.put(techList.get(6), R.drawable.stlucia);
map.put(techList.get(7), R.drawable.trinidadvetobago);
map.put(techList.get(8), R.drawable.isvicre);
map.put(techList.get(9), R.drawable.luksemburg);
map.put(techList.get(10), R.drawable.tonga);
map.put(techList.get(11), R.drawable.filipinler);
map.put(techList.get(12), R.drawable.guyana);
map.put(techList.get(13), R.drawable.guatemala);
map.put(techList.get(14), R.drawable.abd);
map.put(techList.get(15), R.drawable.kanada);
map.put(techList.get(16), R.drawable.peru);
map.put(techList.get(17), R.drawable.burundi);

Collections.shuffle(techList);

millisUntilFinished = 10000;

points = 0;

startGame();
}

private void startGame() {

millisUntilFinished = 10000;

tvTimer.setText("" + (millisUntilFinished / 1000) + "s");
tvPoints.setText(points + " / " + techList.size());

generateQuestions(index);

countDownTimer = new CountDownTimer(millisUntilFinished, 1000) {
@Override
public void onTick(long millisUntilFinished) {
tvTimer.setText("" + (millisUntilFinished / 1000) + "s");
}

@Override
public void onFinish() {
index++;
if (index > techList.size() - 1){
ivShowImage.setVisibility(View.GONE);
btn1.setVisibility(View.GONE);
btn2.setVisibility(View.GONE);
btn3.setVisibility(View.GONE);
btn4.setVisibility(View.GONE);
Intent intent = new Intent(OyunBasladi.this, OyunBitti.class);
intent.putExtra("points", points);
startActivity(intent);
finish();
}
else {
countDownTimer = null;
startGame();
}
}
}.start();
}

private void generateQuestions(int index) {
ArrayList techListTemp = (ArrayList) techList.clone();
String correctAnswer = techList.get(index);
techListTemp.remove(correctAnswer);
Collections.shuffle(techListTemp);
ArrayList newList = new ArrayList();
newList.add(techListTemp.get(0));
newList.add(techListTemp.get(1));
newList.add(techListTemp.get(2));
newList.add(correctAnswer);
Collections.shuffle(newList);
btn1.setText(newList.get(0));
btn2.setText(newList.get(1));
btn3.setText(newList.get(2));
btn4.setText(newList.get(3));
ivShowImage.setImageResource(map.get(techList.get(index)));
}

public void nextQuestion(View view) {
btn1.setBackgroundColor(Color.parseColor("#2196f3"));
btn2.setBackgroundColor(Color.parseColor("#2196f3"));
btn3.setBackgroundColor(Color.parseColor("#2196f3"));
btn4.setBackgroundColor(Color.parseColor("#2196f3"));
btn1.setEnabled(true);
btn2.setEnabled(true);
btn3.setEnabled(true);
btn4.setEnabled(true);
countDownTimer.cancel();
index++;
if (index > techList.size() - 1){
ivShowImage.setVisibility(View.GONE);
btn1.setVisibility(View.GONE);
btn2.setVisibility(View.GONE);
btn3.setVisibility(View.GONE);
btn4.setVisibility(View.GONE);
Intent intent = new Intent(OyunBasladi.this, OyunBitti.class);
intent.putExtra("points", points);
startActivity(intent);
finish();
}
else
{
countDownTimer = null;
startGame();
}
}

public void answerSelected(View view) {
view.setBackgroundColor(Color.parseColor("#17243e"));
btn1.setEnabled(false);
btn2.setEnabled(false);
btn3.setEnabled(false);
btn4.setEnabled(false);
countDownTimer.cancel();
String answer = ((Button) view).getText().toString().trim();
String correctAnswer = techList.get(index);
if(answer.equals(correctAnswer)){
points++;
tvPoints.setText(points + " / " + techList.size());
tvResult.setText("Doğru");
}
else
{
tvResult.setText("Yanlış");
}
}
}

Завершить игру
Коды для игры, в которой после того, как вы ответили на все вопросы, вы перенесетесь сюда. Я думаю, что здесь меньше всего шансов на ошибку, но я все равно помещаю это сюда.
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class OyunBitti extends AppCompatActivity {

TextView tvPoints, tvPersonalBest;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_oyun_bitti);
int points = getIntent().getExtras().getInt("points");
tvPoints = findViewById(R.id.tvPoints);
tvPersonalBest = findViewById(R.id.tvPersonalBest);
tvPoints.setText("" + points);
sharedPreferences = getSharedPreferences("pref", 0);
int pointsSP = sharedPreferences.getInt("pointsSP", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
if(points > pointsSP){
pointsSP = points;
editor.putInt("pointsSP", pointsSP);
editor.commit();
}
// Set tvPersonalBest with the value of pointsSP
tvPersonalBest.setText("" + pointsSP);
}

public void restart(View view) {
Intent intent = new Intent(OyunBitti.this, OyunBasladi.class);
startActivity(intent);
finish();
}

public void exit(View view) {
finish();
}
}

XML-манифест















XML основного действия






























Подробнее здесь: https://stackoverflow.com/questions/761 ... id-onclick
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»