Мое приложение вылетает при нажатии на TextView

Всякий раз, когда я запускаю свое приложение на своем телефоне, оно работает нормально и открывается правильно, но как только я щелкнул TextView для ввода текста в нем, приложение вылетело из строя. У меня есть похожий пост на форуме, но он мне не помог. Совершенно не знаю, что произошло на самом деле. Новое в платформе Android. (пожалуйста, спросите меня, если что-то нужно по вопросу)

MainActivity.java

       import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    public void ButtonClicked(View view){

        EditText EnteredAmount = (EditText) findViewById(R.id.EnteredAmount);
        Log.i("Amount Entered", EnteredAmount.getText().toString());
  }

LogCat Error Log

       --------- beginning of crash
09-08 22:29:11.790 25239-25239/com.example.admin.convertcurrency E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.admin.convertcurrency, PID: 25239
    java.lang.IllegalStateException: Could not find method clickTextView(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatEditText with id 'EnteredAmount'
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:423)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:380)
        at android.view.View.performClick(View.java:5215)
        at android.view.View$PerformClick.run(View.java:21196)
        at android.os.Handler.handleCallback(Handler.java:742)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5603)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)


    --------- beginning of system
09-08 22:29:11.858 25239-25239/com.example.admin.convertcurrency I/Process: Sending signal. PID: 25239 SIG: 9
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
537
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
java.lang.IllegalStateException: Could not find method clickTextView(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatEditText with id 'EnteredAmount'

В вашем макете у вас есть android:onClick = "clickTextView". В вашей деятельности нет метода с именем clickTextView(). Вам необходимо реализовать этот метод в своей деятельности:

public void clickTextView(View v) {
 // whatever you want to do
}

В качестве альтернативы вы можете удалить атрибут android:onClick = "clickTextView" из вашего <EditText> в своем ресурсе макета.

@CommonWare Я хочу открыть клавиатуру после щелчка по текстовому представлению, чтобы ввести что-то в нем вместо сбоя, так что мне делать для этого? Я имею в виду, какой будет код для этого же?

Aniket Jadhav 08.09.2018 19:31

@AniketJadhav, если вам нужен TextView, в котором вы можете вводить текст, вы должны использовать EditText.

TheWanderer 08.09.2018 19:36

@AniketJadhav: Если вы используете EditText, вам не нужен атрибут onClick. Для устройств, которые используют программную клавиатуру, клавиатура появляется автоматически, когда пользователь нажимает на EditText.

CommonsWare 08.09.2018 19:38

@CommonsWare точно, если есть встроенный атрибут OnClick для текстового просмотра, тогда нет необходимости реализовывать дополнительный метод для TextView, и это то, что я сделал в своем коде, все еще не удовлетворен вашим ответом ..!

Aniket Jadhav 08.09.2018 20:02

@TheWanderer, когда вы когда-то давно смотрите на мой код, я уже использовал в нем EditText. Теперь в чем именно заключается проблема

Aniket Jadhav 08.09.2018 20:03

Из него нужно удалить android:onClick = "clickTextView" в XML.

TheWanderer 08.09.2018 20:04

Возможно, вы можете использовать множественный clickListener для представлений:

EditText EnteredAmount = (EditText) findViewById(R.id.EnteredAmount);
EnteredAmount.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        Toast.makeText(this, "I am clicked", Toast.LENGTH_SHORT).show;
    }
});

Я ничего не знаю о OnClickListener, не могли бы вы уточнить этот атрибут?

Aniket Jadhav 08.09.2018 21:16

OnClickListener - это интерфейс, реализованный в классе (не так уж и страшно, если вы этого не понимаете с первого раза). Результат - то, что я показал выше. Это так просто - слушайте клики по представлениям (это могут быть кнопки, текстовые представления ... потому что все они расширяют класс View). Вот еще несколько рекомендаций: developer.android.com/reference/android/widget/Button

keyboard_kracker22 08.09.2018 22:09

Так это же свойство OnClick или разница одна? Я имею в виду, являются ли OnClickListner и OnClick одним и тем же?

Aniket Jadhav 09.09.2018 11:03

Да они такие же. Просто OnClickListener дает вам больше свободы действий при обработке события щелчка.

keyboard_kracker22 09.09.2018 11:17

Другие вопросы по теме