/ / Aplikacja rabatowa na Androida nie działa [zamknięta] - java, android

Aplikacja rabatowa na Androida nie działa [zamknięta] - Java, Android

Tworzę prostą aplikację rabatową na Androida, ale moja aplikacja nie działa i mam nadzieję, że pomożecie mi zrozumieć, co z nią jest nie tak.
Jestem nowy w programowaniu Androida, więc może robię wiele rzeczy źle, a oto mój kod.

W tej chwili pracuję tylko nad częścią RadioButton, gdzie klikam przycisk, powiedzmy 10%, wtedy wyświetli się poprawnie zapisana kwota i suma

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.*;

public class MainActivity extends Activity {

private double listedPrice;
private int discountPrecentID;
private RadioGroup discount;
private double discountPrecent;
// private RadioButton discountPrecent;
private TextView savedAmount;
private TextView payAmount;
private EditText userInput;

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

userInput = (EditText) findViewById(R.id.editText1);
listedPrice = Double.parseDouble(userInput.getText().toString());
savedAmount = (TextView) findViewById(R.id.textView7);
payAmount = (TextView) findViewById(R.id.textView8);
discount = (RadioGroup) findViewById(R.id.radioGroup1);
// SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar1);
// seekBar.setOnSeekBarChangeListener(seekBarListener);
}

public void onClick(View v) {

discountPrecentID = discount.getCheckedRadioButtonId();
// discountPrecent = (RadioButton) findViewById(discountPrecentID);
switch (discountPrecentID) {
case R.id.radio0:{
discountPrecent = 0.10;
savedAmount.setText("$" + listedPrice * discountPrecent);
payAmount.setText("$"
+ (listedPrice - (listedPrice * discountPrecent)));
break;
}
case R.id.radio1:{
discountPrecent = 0.25;
savedAmount.setText("$" + listedPrice * discountPrecent);
payAmount.setText("$"
+ (listedPrice - (listedPrice * discountPrecent)));
break;
}
case R.id.radio2:{
discountPrecent = 0.50;
savedAmount.setText("$" + listedPrice * discountPrecent);
payAmount.setText("$"
+ (listedPrice - (listedPrice * discountPrecent)));
break;
}
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

Odpowiedzi:

1 dla odpowiedzi № 1

To najprawdopodobniej twój problem

listedPrice = Double.parseDouble(userInput.getText().toString());

Użytkownik nie miał szansy wpisać czegoś tym kodem w onCreate() więc jeśli nie masz czegoś zakodowanego na stałe, dostaniesz NumberFormatException. Musisz umieścić ten kod w onClick() lub inne zdarzenie po tym, jak użytkownik miał okazję coś wprowadzić.

Powinieneś także sprawdzić błędy, takie jak umieszczenie go w try/catch.

try
{
listedPrice = Double.parseDouble(userInput.getText().toString());
}
catch (NumberFormatException e)
{
// do something if invalid double
}

Pisząc tutaj, musisz jasno określić, codziała/nie działa zgodnie z oczekiwaniami i jaki jest Twój problem. Ponadto, jeśli Twoja aplikacja ulegnie awarii, w logcat pojawią się dane wyjściowe i musisz je opublikować, abyśmy mogli łatwo zobaczyć, co/gdzie jest problem.

Eclipse nie powiedziało, że masz jakiś problem, ponieważjest to błąd wykonawczy, który oznacza, że ​​Eclipse nie zauważył niczego złego w czasie kompilacji. Oznacza to, że twoja składnia jest poprawna, o ile Eclipse wie, ale twoja logika nie.