Всякий раз, когда я запускаю свое приложение на своем телефоне, оно работает нормально и открывается правильно, но как только я щелкнул 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
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>
в своем ресурсе макета.
@AniketJadhav, если вам нужен TextView, в котором вы можете вводить текст, вы должны использовать EditText.
@AniketJadhav: Если вы используете EditText
, вам не нужен атрибут onClick
. Для устройств, которые используют программную клавиатуру, клавиатура появляется автоматически, когда пользователь нажимает на EditText
.
@CommonsWare точно, если есть встроенный атрибут OnClick для текстового просмотра, тогда нет необходимости реализовывать дополнительный метод для TextView, и это то, что я сделал в своем коде, все еще не удовлетворен вашим ответом ..!
@TheWanderer, когда вы когда-то давно смотрите на мой код, я уже использовал в нем EditText. Теперь в чем именно заключается проблема
Из него нужно удалить android:onClick = "clickTextView"
в XML.
Возможно, вы можете использовать множественный 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, не могли бы вы уточнить этот атрибут?
OnClickListener - это интерфейс, реализованный в классе (не так уж и страшно, если вы этого не понимаете с первого раза). Результат - то, что я показал выше. Это так просто - слушайте клики по представлениям (это могут быть кнопки, текстовые представления ... потому что все они расширяют класс View). Вот еще несколько рекомендаций: developer.android.com/reference/android/widget/Button
Так это же свойство OnClick или разница одна? Я имею в виду, являются ли OnClickListner и OnClick одним и тем же?
Да они такие же. Просто OnClickListener дает вам больше свободы действий при обработке события щелчка.
@CommonWare Я хочу открыть клавиатуру после щелчка по текстовому представлению, чтобы ввести что-то в нем вместо сбоя, так что мне делать для этого? Я имею в виду, какой будет код для этого же?