【问题标题】:My app crashes while clicking on a TextView单击 TextView 时我的应用程序崩溃
【发布时间】:2018-09-08 17:23:27
【问题描述】:

每当我在手机上运行我的应用程序时,它都可以正常工作并正确打开,但是一旦我单击 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 错误日志

       --------- 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 android crash textview runtime-error


    【解决方案1】:
    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
    }
    

    或者,您可以从布局资源中的 <EditText> 中删除 android:onClick="clickTextView" 属性。

    【讨论】:

    • @CommonWare 我想在单击文本视图后打开键盘以在其中输入内容而不是崩溃,那么我该怎么做呢?我的意思是相同的代码是什么?
    • @AniketJadhav 如果你想要一个可以输入文本的 TextView,你应该使用 EditText。
    • @AniketJadhav:如果使用EditText,则不需要onClick 属性。对于使用软键盘的设备,当用户点击EditText时,键盘会自动出现。
    • @CommonsWare 确切地说,如果文本视图有 OnClick 的内置属性,则无需为 TextView 实现额外的方法,这就是我在代码中所做的,仍然对您的回答不满意.. !
    • 您需要在 XML 中删除 android:onClick="clickTextView"
    【解决方案2】:

    也许您可以使用多个 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 为您提供了更多处理点击事件的余地。
    猜你喜欢
    • 2014-05-07
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多