【问题标题】:Android app crashes when nothing is entered and button is pressed当没有输入任何内容并按下按钮时,Android 应用程序崩溃
【发布时间】:2014-04-12 10:38:16
【问题描述】:

您好,我正在开发一个 Android 应用程序,想寻求帮助: 用户在 editText 上输入数字并按下/单击按钮以在答案字段文本中显示转换。

很遗憾,如果没有输入任何内容并且用户单击按钮,应用程序就会崩溃。

谁能帮我把它写成代码:

如果 editText 为空并且单击按钮,则在答案文本字段中显示 0.00。

或者如果editText为空并且按下按钮显示toast消息的其他方式

?

如果有人理解我在说什么并能提供帮助,我将不胜感激,因为我想在发布之前为用户改进我的应用程序;-)

我更新的代码:

    EditText editText = (EditText)findViewById(R.id.editText);
Double num1 = 0.0;
final String myStr = editText.getText().toString();
if (!myStrisEmpty())
{
    num1 = Double.parseDouble(myStr);
}
else
{
    Toast.makeText(getApplicationContext(), getResources().getString(R.string.noinput),
        Toast.LENGTH_LONG).show();
}

问题是这样的: final String myStr = editText.getText().toString(); //editText 为红色 if (!myStrisEmpty()) //(!myStrisEmpty()) 是红色的

我已经尝试了数小时和数天来完成这项任务。只需制作一个应用程序,用户在其中输入一个数字,然后单击按钮将数字转换并在下面显示为 textview 答案。如果我不输入任何内容并单击按钮,应用程序就会崩溃。我想要一条 toast 消息,而不是说“请输入一个数字”

【问题讨论】:

  • 是空指针异常
  • 您不会检查编辑文本何时为空...我确定这是您的问题..您应该有一个条件来检查编辑文本是否为空..如果是,然后您通过向用户显示敬酒来处理它
  • 我正在尝试它仍然崩溃任何想法对不起我缺乏技能.....if(editText.length()==0){ Toast.makeText(Activity2.this, "请输入体重", Toast.LENGTH_LONG).show(); }
  • 你应该发布你的 LogCat 的内容

标签: java android if-statement crash


【解决方案1】:

您正在尝试将空字符串转换为数字。
你应该做的是检查字符串是否不为空:

更改这些行:

EditText editText = (EditText) findViewById(R.id.editText);
Double num1 = Double.parseDouble(editText.getText().toString());

EditText editText = (EditText)findViewById(R.id.editText);
Double num1 = 0.0;
final String myStr = editText.getText().toString();
if (!myStr.isEmpty())
{
    num1 = Double.parseDouble(myStr);
}
else
{
    Toast.makeText(getApplicationContext(), getResources().getString(R.string.noinput),
        Toast.LENGTH_LONG).show();
}

您可以用硬编码字符串替换 getResources().getString(R.string.noinput) (将其设置在您的 /values/strings.xml 文件夹中)(但这不是一个好习惯),例如“您没有输入任何值"

还有这个:

answer.setText(ans.toString());

应该是:

answer.setText("" + ans);

【讨论】:

  • 我只是想发出一条消息,如果字段为空并且按下按钮以使其不会崩溃并说“请输入重量” if(editText.length()==0){ Toast. makeText(Activity2.this, "请输入体重", Toast.LENGTH_LONG).show(); }
  • if(editText.length()==0)错误。阅读我的代码:你必须从你的editText中取出文本(我称之为edt,文本是myStr)。
  • 我不知道抱歉,如果有帮助,请更新我的问题,感谢您的时间和善意帮助我改进我的应用程序
  • 我试过了,但 !isEmpty 仍然在 redwritting 给我错误。有没有更简单的方法让我编写如下代码:
  • 祝酒或验证消息,如果用户没有输入任何数字并按下按钮,将显示一条消息,说“错误请输入数字”或类似的内容/对不起您的时间和我的不足理解,也许我需要更多的睡眠或更多的咖啡哈哈谢谢你的帮助
【解决方案2】:

如果我理解你的意思,你想要达到的目标是:

String input = editText.getText().toString();
    if (input.isEmpty())
        textView.setText("0.00");
    else{
    // do whatever conversions
        textView.setText(result);
   }

【讨论】:

  • public void buttonOnClick(View v) { //当按钮被点击时做一些事情 EditText editText=(EditText)findViewById(R.id.editText); Double num1=Double.parseDouble(editText.getText().toString());双答案= num1 * 2.20462; TextView answer=(TextView) findViewById(R.id.answertxt); answer.setText(ans.toString()); if (editText.isEmpty()) answer.setText("0.00"); }
  • 由于我的声誉,我无法评论该主题,所以我将其留在这里。尝试使用 myStr.IsEmpty() 方法或 StringUtils.isEmpty(myStr)
  • 你或多或少走在正确的道路上,感谢你的好意和帮助,不幸的是仍然没有工作 grrr 我想我可能会在这几天和很多小时上睡觉......
【解决方案3】:

我认为这是因为您在原语上调用 toString() 方法。试试这个:

替换:

answer.setText(ans.toString());

与:

answer.setText(String.valueOf(ans));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多