• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Java error: java.lang.IllegalStateException: Could not find method send_button(View) in a parent or ancestor Context for android:onClick attribute

micerec

Green Team
29.11.2019
38
1
BIT
0
Здравствуйте! Когда я делал одно приложение в Android Studio, на java, оно не имело ошибок в коде, но была ошибка в телефоне, системе, вот она:
java.lang.IllegalStateException: Could not find method send_button(View) in a parent or ancestor Context for android:eek:nClick attribute defined on view class androidx.appcompat.widget.AppCompatButton with id 'send_button'
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:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Вот activity_main.xml:
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <EditText android:id="@+id/edit_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/rate_context"/>
    <Button android:id="@+id/send_button"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/send_button"
        android:onClick="send_button"/>

</LinearLayout>

А вот MainActivity.java
Java:
package com.android.rateapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "EXTRA_MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }
    public void send_button(View view) {
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        Intent intent = new Intent(this, SendMessage.class);
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}
Поскольку упомянается SendMessage.java (да, это не .class, .class это функция. файл .java) прикреплю и его:
Java:
package com.android.rateapp;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class SendMessage extends AppCompatActivity {
    public void onCreate(Bundle savedInstance) {
        super.onCreate(savedInstance);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        TextView textView = (TextView) findViewById(R.id.textview);
        textView.setTextSize(40);
        setContentView(textView);
    }
}
Я искал решение в интернете, но ничего подходящего не нашел. Были похожие ситуации, но у меня решения отуда не помогали. Поэтому спрашиваю здесь. В логе указывается на метод, который описан в классе MainActivity, и расположена кнопка в activity_main, так что ошибка в activity_main.xml или в MainActivity.java. Поэтому прикрепляю их здесь. Если понадобится весь код, то зип файл есть на гитхабе - https://github.com/some-work-some-prog/some-work-some-prog.github.io/raw/master/RateApp_AS.zip
 

Rasu_lu26

Well-known member
06.11.2019
72
0
BIT
0
Здравствуйте! Когда я делал одно приложение в Android Studio, на java, оно не имело ошибок в коде, но была ошибка в телефоне, системе, вот она:
java.lang.IllegalStateException: Could not find method send_button(View) in a parent or ancestor Context for android:eek:nClick attribute defined on view class androidx.appcompat.widget.AppCompatButton with id 'send_button'
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:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Вот activity_main.xml:
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <EditText android:id="@+id/edit_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/rate_context"/>
    <Button android:id="@+id/send_button"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/send_button"
        android:onClick="send_button"/>

</LinearLayout>

А вот MainActivity.java
Java:
package com.android.rateapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "EXTRA_MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }
    public void send_button(View view) {
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        Intent intent = new Intent(this, SendMessage.class);
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}
Поскольку упомянается SendMessage.java (да, это не .class, .class это функция. файл .java) прикреплю и его:
Java:
package com.android.rateapp;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class SendMessage extends AppCompatActivity {
    public void onCreate(Bundle savedInstance) {
        super.onCreate(savedInstance);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        TextView textView = (TextView) findViewById(R.id.textview);
        textView.setTextSize(40);
        setContentView(textView);
    }
}
Я искал решение в интернете, но ничего подходящего не нашел. Были похожие ситуации, но у меня решения отуда не помогали. Поэтому спрашиваю здесь. В логе указывается на метод, который описан в классе MainActivity, и расположена кнопка в activity_main, так что ошибка в activity_main.xml или в MainActivity.java. Поэтому прикрепляю их здесь. Если понадобится весь код, то зип файл есть на гитхабе - https://github.com/some-work-some-prog/some-work-some-prog.github.io/raw/master/RateApp_AS.zip
Ваш класс должен расширять Fragment и раздувать макет в обратном вызове onCreateView (). Вызовите getActivity (). FindViewById в обратном вызове onViewCreated ().
 

micerec

Green Team
29.11.2019
38
1
BIT
0
Ваш класс должен расширять Fragment и раздувать макет в обратном вызове onCreateView (). Вызовите getActivity (). FindViewById в обратном вызове onViewCreated ().
Спасибо за ответ, но я лучше понимаю сам код. Вы не могли бы написать именно код, который должен получиться? Куда всунуть вызовы я наверное найду.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!