Правя просто приложение за отстъпки за android, но приложението ми не работи и се надявам, момчета, да ми помогнете да разбера какво не е наред с него.
Аз съм нов в андроид развитието, така че може би аз правя много неща неправилно и ето моят код.
В момента просто работя върху частта на RadioButton, където щракнете върху бутона, да кажем 10%, след това ще се покаже правилно запазената сума и общата сума
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;
}
}
Отговори:
1 за отговор № 1Това най-вероятно е вашият проблем
listedPrice = Double.parseDouble(userInput.getText().toString());
Потребителят не е имал шанс да въведе нещо с този код в onCreate()
така че, ако нямате нещо твърдо кодирано, ще получите a NumberFormatException
, Трябва да поставите този код в onClick()
или някакво друго събитие, след като потребителят е имал шанс да въведе нещо.
Вие също трябва да направите някои проверки на грешки, като например да го поставите вътре в try/catch
.
try
{
listedPrice = Double.parseDouble(userInput.getText().toString());
}
catch (NumberFormatException e)
{
// do something if invalid double
}
Когато публикувате тук, трябва ясно да посочите каквоработи / не работи ли според очакванията и какъв е проблемът ви. Освен това, ако приложението ви се срине, тогава ще има изход в logcat и трябва да публикувате това, за да можем лесно да видим какъв / къде е проблемът.
Eclipse не каза, че имаш някакъв проблем, защототова е грешка по време на изпълнение, което означава, че Eclipse не е виждал нищо нередно по време на компилиране. Значението на вашия синтаксис е правилно, доколкото Eclipse знае, но вашата логика не е така.