[英]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.