btnNadoplata.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
long inputValue1 = Long.parseLong(text1.getText().toString());
String encodedHash = Uri.encode("#");
if (text1.getText().length() == 14 ) {
startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:*123*" + inputValue1 + encodedHash)));
}else {
Toast.makeText(bonbon.this, "Krivi kod. Unesi 14-znamenkasti kod sa bona!", Toast.LENGTH_SHORT).show();
}
}
});
我有一个editText,用户需要输入一个14位数字。如果number小于或大于14位,当用户clikc on按钮时,他会收到输入不好的消息。问题是当editText为空时,用户点击按钮,应用程序崩溃。我怎么能改变这个,所以如果editText为空,用户从上面的代码部分获取消息??
Sory因为我的英语不好。
答案 0 :(得分:1)
这行可能会崩溃:
long inputValue1 = Long.parseLong(text1.getText().toString());
实际上,如果EditText text1
中有一个空字符串,则函数parseLong()
将抛出NumberFormatException
异常。
在继续之前,您应该测试text1
文本的值:
public void onClick(View v)
{
if (text1.getText().toString().compareTo("") == 0)
{
long inputValue1 = Long.parseLong(text1.getText().toString());
String encodedHash = Uri.encode("#");
...
或者您可以添加try/catch
指令来捕获Long.parseLong()
引发的异常。
public void onClick(View v)
{
try
{
long inputValue1 = Long.parseLong(text1.getText().toString());
String encodedHash = Uri.encode("#");
...
}
catch (NumberFormatException nfe)
{
...
}
答案 1 :(得分:1)
您应该在解析之前测试输入长度。解析崩溃。
public void onClick(View v)
{
if( text1.getText().length() <14 )
{
Toast.makeText(bonbon.this, "Krivi kod. Unesi 14-znamenkasti kod sa bona!", Toast.LENGTH_SHORT).show();
return;
}//if
long inputValue1 = Long.parseLong(text1.getText().toString());
String encodedHash = Uri.encode("#");
startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:*123*" + inputValue1 + encodedHash)));
}//met
另一种选择可能是使用try / catch / block来解析,但它的效率低于这个简单的测试,但如果用户输入非数字,则会更加健壮。
此致 斯特凡
答案 2 :(得分:0)
objText = (EditText)findViewById(R.id.txtPurchasePrice);
String strPurchasePrice = objText.getText().toString();
objText = (EditText)findViewById(R.id.txtSalePrice);
String strSalePrice = objText.getText().toString();
objText = (EditText)findViewById(R.id.txtShares);
String strShares = objText.getText().toString();
if(strPurchasePrice.trim().equals("") && strSalePrice.trim().equals("") && strShares.trim().equals("")) {
Toast.makeText(getApplicationContext(), "Please insert the Values..", 10000).show();
}