我正在尝试显示两个用户输入的结果 - 数字字段但是徒劳无功。它应该是实时发生的,即无需按任何按钮,结果应显示为字段数据更改,默认值为“零”。 这里number1和number2是两个输入,grosstotal是number1 + number2的结果。 请帮忙。
更新: 我已按照[@Jacky]的建议输入代码,但是一旦我尝试输入任何数字,app就会崩溃。尝试使用调试[从我在模拟器上进行数据输入的点]并且已经输入了它的结果,因为它可能有任何帮助。 请帮助。
MainActivity:
package com.ck.cg;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText getnumber1;
private EditText getnumber2;
private TextView displaygrossTotal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getnumber1 = (EditText) findViewById(R.id.number1);
getnumber2 = (EditText) findViewById(R.id.number2);
displaygrossTotal = (TextView) findViewById(R.id.grossTotal);
getQuantity.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
GetSum();
}
});
getRate.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
GetSum();
}
});
}
private void GetSum() {
int a = 0, b = 0, total;
if (getnumber1.getText() != null && !getnumber1.getText().toString().equals("")) {
try {
a = Integer.parseInt(getnumber1.getText().toString());
} catch (Exception e) {
a = 0;
}
}
if (getnumber2.getText() != null && !getnumber2.getText().toString().equals("")) {
try {
b = Integer.parseInt(getnumber2.getText().toString());
} catch (Exception e) {
b = 0;
}
}
total = a + b;
displaygrossTotal.setText(total);
}
}
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.ck.cg.MainActivity">
<EditText
android:id="@+id/number1"
android:labelFor="@+id/number1"
android:layout_width="90dp"
android:layout_height="45dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/number_1"
android:ems="10"
android:inputType="numberDecimal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/number2"
android:labelFor="@+id/number2"
android:layout_width="90dp"
android:layout_height="45dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/number_2"
android:ems="10"
android:inputType="numberDecimal"
app:layout_constraintStart_toEndOf="@+id/number1"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/grossTotal"
android:layout_width="90dp"
android:layout_height="45dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/gross_total"
app:layout_constraintStart_toEndOf="@+id/number2"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="50dp"
android:layout_height="45dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:text="+"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
调试:
W/ResourceType: No package identifier when getting value for resource number 0x00000001
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ck.cg, PID: 6801
android.content.res.Resources$NotFoundException: String resource ID #0x1
at android.content.res.Resources.getText(Resources.java:335)
at android.widget.TextView.setText(TextView.java:4555)
at com.ck.cg.MainActivity.GetSum(MainActivity.java:77)
at com.ck.cg.MainActivity.access$000(MainActivity.java:10)
at com.ck.cg.MainActivity$1.afterTextChanged(MainActivity.java:37)
at android.widget.TextView.sendAfterTextChanged(TextView.java:8203)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10382)
at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1218)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:579)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:509)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:508)
at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:121)
at android.widget.TextView.doKeyDown(TextView.java:6285)
at android.widget.TextView.onKeyDown(TextView.java:6075)
at android.view.KeyEvent.dispatch(KeyEvent.java:2688)
at android.view.View.dispatchKeyEvent(View.java:9960)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1630)
at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:405)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1798)
at android.app.Activity.dispatchKeyEvent(Activity.java:3021)
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:534)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:58)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:316)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:319)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4331)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4302)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3999)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4056)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6246)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6220)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6181)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3651)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
答案 0 :(得分:0)
对于之前的帖子感到抱歉,因为它会给你带来很多麻烦。经过审核,我不知道为什么我会给你TextWatcher
给你答案,给你带来很多麻烦。这是MainActivity,简单OnClickListener
:
private EditText getnumber1;
private EditText getnumber2;
private TextView displaygrossTotal;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getnumber1 = (EditText) findViewById(R.id.number1);
getnumber2 = (EditText) findViewById(R.id.number2);
displaygrossTotal = (TextView) findViewById(R.id.grossTotal);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int a = 0, b = 0, total;
if (getnumber1.getText() != null && !getnumber1.getText().toString().equals("")) {
try {
a = Integer.parseInt(getnumber1.getText().toString());
} catch (Exception e) {
a = 0;
}
}
if (getnumber2.getText() != null && !getnumber2.getText().toString().equals("")) {
try {
b = Integer.parseInt(getnumber2.getText().toString());
} catch (Exception e) {
b = 0;
}
}
total = a + b;
displaygrossTotal.setText(String.valueOf(total));
}
});
}