我正在为学校创建一个咖啡订购应用程序。我下面的代码的目的是根据是否单击了extractCoffeeButton或addCoffeeButton来增加或减少咖啡整数。 coffeeTV用于向用户显示排队订购的咖啡数量。小计和小计电视用于保存价格并将其显示给用户。

照原样,subtractCoffee和addCoffee按钮可用于将coffee和coffeeTV从0递增到1,反之亦然,小计和小计TV也可显示0.00和2.5,但不会再增加。当希望将咖啡增加到2、3、4等时,进一步的按钮单击不会导致任何事情发生。和小计至5.00、7.50、10.00等。

码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

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

        Button subtractCoffee = (Button) findViewById(R.id.subtractCoffeeButton);
        subtractCoffee.setOnClickListener(this);

        Button addCoffee = (Button) findViewById(R.id.addCoffeeButton);
        addCoffee.setOnClickListener(this);

}



    @Override
    public void onClick(View v) {
    double subtotal = 0.00;

    int coffee = 0;


    double coffeePrice = 2.50;

    TextView coffeeTV = (TextView) findViewById(R.id.tvCoffeeOrder);
    String coffeeString = coffeeTV.getText().toString();
    int coffeeTracker = Integer.parseInt(coffeeString);

    TextView subTotalTV = (TextView) findViewById(R.id.tvSubtotalCost);


    switch (v.getId()) {
        case R.id.subtractCoffeeButton:
            if (coffeeTracker == 0) {
                break;
            } else if (coffeeTracker == 1) {
                coffee = 0;
                coffeeTracker = 0;
                coffeeTV.setText(Integer.toString(coffee));
                break;
            } else {
                coffee = coffee - 1;
                coffeeTV.setText(Integer.toString(coffee));
                subtotal = subtotal - coffeePrice;
                subTotalTV.setText(Double.toString(subtotal));
            }
            break;
        case R.id.addCoffeeButton:
            coffee += 1;
            coffeeTracker+=1;
            coffeeTV.setText(Integer.toString(coffee));
            subtotal = subtotal + coffeePrice;
            subTotalTV.setText(Double.toString(subtotal));
            break;
    }

}

最佳答案

@Override
public void onClick(View v) {
double subtotal = 0.00;
int coffee = 0;
double coffeePrice = 2.50;


这些变量必须在onClick方法之外。
每次您调用onClick时,它们都会从0重新开始。

07-28 02:09
查看更多