簡體   English   中英

Android 應用程序不斷崩潰(Android Studio)

[英]Android application keeps crashing (Android Studio)

我正在嘗試在 android 工作室設計一個簡單的計算器,但每當我在模擬器上運行我的應用程序時,它就會崩潰。 嘗試幾次后,它最終會打開並顯示用戶界面,但每當我點擊一個按鈕時,它就會崩潰。 我是 android 工作室的新手,因此我將不勝感激關於我的代碼如何導致它崩潰的一些提示。

這是我的 XML:

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.calc.basiccalculator.MainActivity"
tools:layout_editor_absoluteY="81dp"
tools:layout_editor_absoluteX="0dp">

<TextView
    android:id="@+id/outputText"
    android:layout_width="0dp"
    android:layout_height="47dp"
    android:text="0"
    android:textAlignment="textEnd"
    android:textSize="33dp"
    android:layout_marginRight="17dp"
    android:layout_marginBottom="19dp"
    android:layout_marginEnd="17dp"

    tools:layout_constraintTop_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/equals"
    android:layout_marginStart="17dp"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginTop="18dp"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginLeft="17dp" />

<Button
    android:id="@+id/one"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="1"
    android:onClick="pressOne"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/zero"
    app:layout_constraintRight_toRightOf="@+id/four"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/four" />

<Button
    android:id="@+id/three"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="3"
    android:onClick="pressThree"
    tools:layout_constraintTop_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toBottomOf="@+id/two"
    app:layout_constraintRight_toRightOf="@+id/six"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/six"
    app:layout_constraintTop_toTopOf="@+id/two" />

    <Button
    android:id="@+id/four"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="4"
        android:onClick="pressFour"
        tools:layout_constraintRight_creator="1"
        tools:layout_constraintBottom_creator="1"
        app:layout_constraintBottom_toTopOf="@+id/one"
        app:layout_constraintRight_toRightOf="@+id/seven"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toLeftOf="@+id/seven" />

<Button
    android:id="@+id/five"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="5"
    android:onClick="pressFive"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/two"
    app:layout_constraintRight_toRightOf="@+id/two"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/two" />

<Button
    android:id="@+id/two"
    android:layout_width="124dp"
    android:layout_height="75dp"
    android:onClick="pressTwo"
    android:text="2"
    tools:layout_constraintRight_creator="1"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBaseline_toBaselineOf="@+id/one"
    tools:layout_constraintBaseline_creator="1"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="parent"
    tools:layout_editor_absoluteY="433dp" />

<Button
    android:id="@+id/six"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="6"
    android:onClick="pressSix"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/three"
    app:layout_constraintRight_toRightOf="@+id/nine"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/nine" />

<Button
    android:id="@+id/eight"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="8"
    android:onClick="pressEight"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/five"
    app:layout_constraintRight_toRightOf="@+id/five"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/five" />

<Button
    android:id="@+id/nine"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="9"
    android:onClick="pressNine"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/six"
    app:layout_constraintRight_toRightOf="@+id/subtract"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/subtract" />

<Button
    android:id="@+id/seven"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:onClick="pressSeven"
    android:text="7"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/four"
    app:layout_constraintRight_toRightOf="@+id/clear"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/clear" />

<Button
    android:id="@+id/zero"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="0"
    android:onClick="pressZero"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintRight_toRightOf="@+id/one"
    tools:layout_constraintLeft_creator="1"
    android:layout_marginBottom="16dp"
    app:layout_constraintLeft_toLeftOf="@+id/one"
    app:layout_constraintHorizontal_bias="0.0" />

<Button
    android:id="@+id/clear"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="CE"
    android:onClick="clear"
    app:layout_constraintRight_toLeftOf="@+id/plus"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/seven"
    android:layout_marginStart="16dp"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginLeft="16dp" />

<Button
    android:id="@+id/subtract"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="-"
    android:onClick="pressSubtract"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/nine"
    app:layout_constraintRight_toRightOf="@+id/divide"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/divide" />

<Button
    android:id="@+id/plus"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="+"
    android:onClick="pressPlus"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/multiply"
    app:layout_constraintRight_toRightOf="@+id/multiply"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/multiply" />

<Button
    android:id="@+id/multiply"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="*"
    android:onClick="pressMultiply"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/eight"
    app:layout_constraintRight_toRightOf="@+id/eight"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/eight" />

<Button
    android:id="@+id/divide"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="/"
    android:onClick="pressDivide"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toTopOf="@+id/subtract"
    android:layout_marginStart="1dp"
    android:layout_marginEnd="16dp"
    app:layout_constraintRight_toRightOf="parent"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toRightOf="@+id/plus"
    android:layout_marginLeft="1dp"
    android:layout_marginRight="16dp" />

<Button
    android:id="@+id/backspace"
    android:layout_width="0dp"
    android:layout_height="75dp"
    android:text="DEL"
    android:onClick="pressBack"
    tools:layout_constraintRight_creator="1"
    app:layout_constraintRight_toRightOf="@+id/clear"
    app:layout_constraintBaseline_toBaselineOf="@+id/plus"
    tools:layout_constraintBaseline_creator="1"
    tools:layout_constraintLeft_creator="1"
    app:layout_constraintLeft_toLeftOf="@+id/clear"
    app:layout_constraintHorizontal_bias="0.0" />

<Button
    android:id="@+id/equals"
    android:layout_width="0dp"
    android:layout_height="53dp"
    android:text="="
    android:onClick="pressEquals"
    tools:layout_constraintTop_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintBottom_creator="1"
    app:layout_constraintBottom_toBottomOf="@+id/divide"
    app:layout_constraintRight_toRightOf="@+id/divide"
    android:layout_marginTop="84dp"
    tools:layout_constraintLeft_creator="1"
    android:layout_marginBottom="75dp"
    app:layout_constraintLeft_toLeftOf="@+id/divide"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

這是我的代碼:

package com.calc.basiccalculator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

  String operation;
  CharSequence num1;
  CharSequence num2;
  TextView t;
  String n1;
  String n2;
  int number1;
  int number2;
  int output;
  String out;
  CharSequence temp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    t = (TextView) findViewById(R.id.outputText);
    operation = "";
    num1 = "";
    num2 = "";
    n1 = "";
    n2 = "";
    number1 = 1;
    number2 = 0;
    output = 0;
    out = "";
    temp = "";
}

public void pressOne() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("1");
    }
    else {
        t.append("1");
    }
}
public void pressTwo() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("2");
    }
    else {
        t.append("2");
    }
}
public void pressThree() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("3");
    }
    else {
        t.append("3");
    }
}
public void pressFour() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("4");
    }
    else {
        t.append("4");
    }
}
public void pressFive() {
    temp = t.getText();
    if (temp == "0" && operation == "") {
        t.clearComposingText();
        t.setText("5");
    }
    else {
        t.append("5");
    }
}
public void pressSix() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("6");
    }
    else {
        t.append("6");
    }
}
public void pressSeven() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("7");
    }
    else {
        t.append("7");
    }
}
public void pressEight() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("8");
    }
    else {
        t.append("8");
    }
}
public void pressNine() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("9");
    }
    else {
        t.append("9");
    }
}
public void pressZero() {
    temp = t.getText();
    if (temp == "0") {
        t.clearComposingText();
        t.setText("0");
    }
    else {
        t.append("0");
    }
}
public void pressSubtract() {
    num1 = t.getText();
    t.clearComposingText();
    operation = "-";
}
public void pressPlus() {
        num1 = t.getText();
        t.clearComposingText();
        operation = "+";
}
public void pressMultiply() {
    num1 = t.getText();
    t.clearComposingText();
    operation = "*";
}
public void pressDivide() {
    num1 = t.getText();
    t.clearComposingText();
    operation = "/";
}
public void clear() {
    t.clearComposingText();
}
public void pressEquals() {
    if (operation == "+") {
        num2 = t.getText();
        n1 = num1.toString();
        n2 = num2.toString();
        number1 = Integer.parseInt(n1);
        number2 = Integer.parseInt(n2);
        output = number1 + number2;
    }
    if (operation == "-") {
        num2 = t.getText();
        n1 = num1.toString();
        n2 = num2.toString();
        number1 = Integer.parseInt(n1);
        number2 = Integer.parseInt(n2);
        output = number1 - number2;
    }
    if (operation == "*") {
        num2 = t.getText();
        n1 = num1.toString();
        n2 = num2.toString();
        number1 = Integer.parseInt(n1);
        number2 = Integer.parseInt(n2);
        output = number1 * number2;
    }
    if (operation == "/") {
        num2 = t.getText();
        n1 = num1.toString();
        n2 = num2.toString();
        number1 = Integer.parseInt(n1);
        number2 = Integer.parseInt(n2);
        output = number1 / number2;
    }
    t.clearComposingText();
    out = String.valueOf(output);
    t.append(out);
    operation = "";

  }
}

您可以通過調查日志 output 輕松找到導致任何崩潰的錯誤,您可以在 Android 監視器 window 中找到該日志,如下圖所示。

在此處輸入圖像描述

使用android:onClick屬性在 XML 布局中分配方法時,該方法必須是公共的,並且接受一個視圖作為唯一參數。 這在Android 開發人員參考中進行了解釋。

您代碼中的方法都缺少 View 參數。

public void onClickExampleMethod(View view) {
 // Handle click
}

onClick 方法聲明應為

 public void methodName(View v) {}

請將您的方法更改為:

public void pressOne(View v) {...}
public void pressTwo(View v) {...}
public void pressThree(View v) {...}
public void pressFour(View v) {...}
public void pressFive(View v) {...}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM