【问题标题】:My Android App crashes when I hit the button当我按下按钮时,我的 Android 应用程序崩溃了
【发布时间】:2020-10-15 02:51:27
【问题描述】:

我正在关注 youtube 上的一个教程视频,用于创建一个简单的 Android 应用程序。有两个数字输入框,一个乘法按钮和一个用于显示结果的文本视图框。当我点击乘法按钮时,应用程序应该将用户输入的两个数字相乘并显示结果。但是当我点击乘法按钮时,应用程序崩溃了。想不通为什么。我在创建项目时选择了 Android 8.0。布局:https://ibb.co/PtcPCFc

    package com.sa.firstapp;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

        Button multiplyButton = (Button) findViewById(R.id.multiplyButton);
        multiplyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText firstNumEditText = (EditText) findViewById(R.id.firstNumEditText);
                EditText secondNumEditText = (EditText) findViewById(R.id.secondNumEditText);

                TextView resultTextView = (TextView) findViewById(R.id.resultTextView);

                int num1 = Integer.parseInt(firstNumEditText.getText().toString());
                int num2 = Integer.parseInt(secondNumEditText.getText().toString());

                int result = num1 * num2;
                resultTextView.setText(String.valueOf(result));

            }
        });
            }
}

这里是日志:

     --------- beginning of crash
2020-06-24 21:31:02.754 8724-8724/com.sa.firstapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sa.firstapp, PID: 8724
    java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.widget.EditText
        at com.sa.firstapp.MainActivity$1.onClick(MainActivity.java:22)
        at android.view.View.performClick(View.java:7438)
        at android.view.View.performClickInternal(View.java:7415)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28286)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7523)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
2020-06-24 21:31:02.814 8724-8724/? I/Process: Sending signal. PID: 8724 SIG: 9

这是应用程序的屏幕截图: screenshot of the app

【问题讨论】:

  • 向我们展示您的布局文件
  • 不好意思今天刚下载了Android Studio,在哪里可以找到布局文件?
  • 你放置按钮和文本的地方:)
  • 不是专家,但应该有一个“firstNumEditText”,它不在 EditText 内
  • 这是布局,我希望是这样:ibb.co/PtcPCFc

标签: java android android-studio button


【解决方案1】:

错误是 ClassCastException。

java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout 不能被强制转换为 android.widget.EditText

在您的代码中,两个 EditText 之一

EditText firstNumEditText = (EditText)findViewById(R.id.firstNumEditText);
EditText secondNumEditText = (EditText) findViewById(R.id.secondNumEditText);

您正在绑定的是指属于 ConstraintLayout 而不是 EditText 的 ID。在您发布的图像中,R.id.secondNumEditText 属于 ConstraintLayout。单击布局中的 EditText,它将在右侧面板中显示您必须在 Java 中使用的 id。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多