Android折扣应用未运行

我正在为Android制作一个简单的折扣应用程序,但我的应用程序没有运行,希望你们能帮助我弄清楚它有什么问题。
我是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; } } 

这很可能是你的问题

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

用户没有机会在onCreate()输入带有此代码的内容,因此除非您有硬编码的内容,否则您将获得NumberFormatException 。 在用户有机会输入内容之后,您需要将该代码放在onClick()或其他一些事件中。

您还应该进行一些错误检查,例如将其放在try/catch

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

在此处发布时,您需要清楚地说明什么是/未按预期工作以及您的问题是什么。 此外,如果你的应用程序崩溃,那么logcat中会有输出,你需要发布,这样我们就可以很容易地看到问题所在/哪里。

Eclipse没有说你有任何问题,因为这是一个运行时错误,这意味着Eclipse在编译时没有看到任何错误。 这意味着你的语法是正确的,就像Eclipse所知,但你的逻辑不是。