簡體   English   中英

當我按下其中一個按鈕時,我的應用程序在模擬器中崩潰

[英]My app crashes in the emulator when I press one of the buttons

我是編碼方面的絕對初學者,請幫忙? 我正在嘗試制作一個簡單的計算器,這就是教授告訴我要做的,但由於某種我無法弄清楚的原因它不起作用......

這是我的主要活動 XML。我將所有內容都放在線性布局中,因為這是迄今為止我們在 class 中學到的唯一一個。

activityMain.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="15dp"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/num1Tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Number 1 : " />

        <EditText
            android:id="@+id/edNum1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/num2Tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Number 2 : " />

        <EditText
            android:id="@+id/edNum2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number" />
    </LinearLayout>


    <Button
        android:id="@+id/btnAdd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="+" />

    <Button
        android:id="@+id/btnSub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-" />

    <Button
        android:id="@+id/btnMul"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="*" />

    <Button
        android:id="@+id/btnDiv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="/" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="10dp">

        <TextView
            android:id="@+id/tvResult"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Result : " />

        <TextView
            android:id="@+id/tvRes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>


</LinearLayout>

這是我的主要活動 java。我認為如果出現問題,它很有可能就在這里,因為這部分是我開始感到困惑的時候。

MainActivity.java

package com.example.calculatortask;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

        final EditText num1 = (EditText) findViewById(R.id.edNum1);
        final EditText num2 = (EditText) findViewById(R.id.edNum2);
        Button add = (Button) findViewById(R.id.btnAdd);
        Button sub = (Button) findViewById(R.id.btnSub);
        Button mul = (Button) findViewById(R.id.btnMul);
        Button div = (Button) findViewById(R.id.btnDiv);
        final TextView res = (TextView) findViewById(R.id.tvRes);

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str1 = num1.getText().toString();
                String str2 = num2.getText().toString();
                int num1 = Integer.parseInt(str1);
                int num2 = Integer.parseInt(str2);
                int result = num1 + num2;

                res.setText(result);
            }
        });

        sub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str1 = num1.getText().toString();
                String str2 = num2.getText().toString();
                int num1 = Integer.parseInt(str1);
                int num2 = Integer.parseInt(str2);
                int result = num1 - num2;

                res.setText(result);
            }
        });

        mul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str1 = num1.getText().toString();
                String str2 = num2.getText().toString();
                int num1 = Integer.parseInt(str1);
                int num2 = Integer.parseInt(str2);
                int result = num1 * num2;

                res.setText(result);
            }
        });

        div.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str1 = num1.getText().toString();
                String str2 = num2.getText().toString();
                int num1 = Integer.parseInt(str1);
                int num2 = Integer.parseInt(str2);
                int result = num1 / num2;

                res.setText(result);
            }
        });
    }
}

這是我的 logcat ..我真的不知道怎么讀這個..我聽說人們發現錯誤發生在哪里? 所以我把它放上去。

錯誤:

E/.calculatortas: Invalid ID 0x00000009.
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.calculatortask, PID: 3029
    android.content.res.Resources$NotFoundException: String resource ID #0x9
        at android.content.res.Resources.getText(Resources.java:348)
        at android.widget.TextView.setText(TextView.java:5831)
        at com.example.calculatortask.MainActivity$1.onClick(MainActivity.java:34)
        at android.view.View.performClick(View.java:6597)
        at android.view.View.performClickInternal(View.java:6574)
        at android.view.View.access$3100(View.java:778)
        at android.view.View$PerformClick.run(View.java:25885)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 3029 SIG: 9
Application terminated.

res.setText(result)替換為res.setText(String.valueOf(result)) 如果您將一個int傳遞給setText ,那么它需要一個資源 ID。

暫無
暫無

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

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