-EDIT 5/27 / 2020-
Я продвинулся немного дальше со своим кодом и теперь пытаюсь получить стоимость обновления с помощью onTextChangedListener. Кажется, что он выполняет свою работу, однако он всегда использует int 0 для каждого значения даже после его изменения, и вы можете видеть, что значение «обновляется». Я надеюсь, что в моем коде что-то не так, чего я не улавливаю. Я с нетерпением жду отзывов от всех.
final Button bContinue = findViewById(R.id.bContinue);
final EditText etHamburger = findViewById(R.id.etHamburger);
final EditText etHotdog = findViewById(R.id.etHotdog);
final EditText etDrink = findViewById(R.id.etDrink);
final EditText etSpecialInstructions = findViewById(R.id.etSpecialInstructions);
final EditText tvCost = findViewById(R.id.tvCost);
etHamburger.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
int Hamburger;
try {
Hamburger = Integer.parseInt(String.valueOf(etHamburger));
} catch (NumberFormatException e) {
Hamburger = 0;
}
int Hotdog;
try {
Hotdog = Integer.parseInt(String.valueOf(etHotdog));
} catch (NumberFormatException e) {
Hotdog = 0;
}
int Drink;
try {
Drink = Integer.parseInt(String.valueOf(etDrink));
} catch (NumberFormatException e) {
Drink = 0;
}
int cost = Hamburger + Drink + Hotdog;
String message = "Total Cost $ " + cost;
tvCost.setText(message);
}
});
bContinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent OrderIntent = new Intent(order.this, ContactInfo.class);
OrderIntent.putExtra("etHamburger", String.valueOf(etHamburger));
OrderIntent.putExtra("etHotdog", String.valueOf(etHotdog));
OrderIntent.putExtra("etDrink", String.valueOf(etDrink));
OrderIntent.putExtra("etSpecialInstructions", (Parcelable) etSpecialInstructions);
OrderIntent.putExtra("tvCost", (Parcelable) tvCost);
order.this.startActivity(OrderIntent);
}
});
}
}
-ОРИГИНАЛЬНЫЙ ВОПРОС И КОД-
Мне не удается заставить этот код работать, и я искал решение, но могу Кажется, не нашел. Вот мой код. Я просто пытаюсь получить его, поэтому мой TextChangedListener активирует метод для пересчета суммы после того, как пользователь изменит количество. Я искал другие сообщения, чтобы найти свой ответ, и не нашел того, что искал, но я тоже новичок в этом. В настоящее время у меня возникли проблемы с созданием метода, похоже, мой TextChangedListener работает.
package com.example.foodordering;
import android.content.Intent;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.GetChars;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.TextView;
public class order extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
final Button bContinue = findViewById(R.id.bContinue);
final EditText etHamburger = findViewById(R.id.etHamburger);
final EditText etHotdog = findViewById(R.id.etHotdog);
final EditText etDrink = findViewById(R.id.etDrink);
final EditText etSpecialInstructions = findViewById(R.id.etSpecialInstructions);
final EditText tvCost = findViewById(R.id.tvCost);
public void calculate(){
int Hamburger;
try {
Hamburger = Integer.parseInt(String.valueOf(etHamburger));
} catch (NumberFormatException e) {
Hamburger = 0;
}
int Hotdog;
try {
Hotdog = Integer.parseInt(String.valueOf(etHotdog));
} catch (NumberFormatException e) {
Hotdog = 0;
}
int Drink;
try {
Drink = Integer.parseInt(String.valueOf(etDrink));
} catch (NumberFormatException e) {
Drink = 0;
}
int cost = Hamburger + Hotdog + Drink;
String message = "Order Total $" + cost;
tvCost.setText(message);
}
etHamburger.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
calculate();
}
});
bContinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent OrderIntent = new Intent(order.this, ContactInfo.class);
OrderIntent.putExtra("etHamburger", (Parcelable) etHamburger);
OrderIntent.putExtra("etHotdog", (Parcelable) etHotdog);
OrderIntent.putExtra("etDrink", (Parcelable) etDrink);
OrderIntent.putExtra("etSpecialInstructions", (Parcelable) etSpecialInstructions);
order.this.startActivity(OrderIntent);
}
});
}
}