【问题标题】:Android discount app is not running [closed]Android折扣应用程序未运行[关闭]
【发布时间】:2014-02-12 01:21:15
【问题描述】:

我正在为 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;
}

}

【问题讨论】:

  • 什么是/不工作?你被困在哪里了?
  • 不确定我如何通过发布诚实的问题获得 -2 代表?我花了很多时间写这篇文章,人们只是给我负面的代表而不说什么?我很难过。
  • 我没有投反对票,但我敢猜测这是因为你没有解释你的问题。
  • 当我运行它时,它一直说“不幸的是,折扣计算器已停止。”并且 logCat 说 Double 是一个问题,但 eclipse 并没有说我的代码有任何问题
  • 那么你的logcat中会有一个异常......发布那个。

标签: java android


【解决方案1】:

这很可能是你的问题

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 所知,但您的逻辑不正确。

【讨论】:

  • 感谢您的建议!我想我现在已经解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多