我正在编写一个应用程序,它从AddBook类中获取输入,允许它显示在List
中,然后允许用户搜索他们的书。为此,我正在创建一个临时EditText
,将其绑定到用户实际输入其搜索值的框,然后(在确保它不为空之后)我比较他们为ISBN输入的内容arrayList
<Book>
个自定义对象中每个条目的ISBN编号,该列表被命名为books。
问题是,当我尝试将EditText
解析为Int
时,它似乎无效。我首先尝试在toString()
上使用EditText
,然后在该方法的结果上使用Integer.parseInt()
,但由于转换似乎不成功,所以没有成功;
所有资源都已到位且代码编译正确,因此这些不是问题。
EditText myEdTx = (EditText) findViewById(R.id.bookName);
if(myEdTx.getText().equals("")){Toast toast = Toast.makeText(this, "Please enter something for us to work with!", Toast.LENGTH_SHORT);
toast.show();}
else{
//resume here
for(int i=0; i<books.size(); i++)
{
Book tBook = new Book(i, null, null); tBook = books.get(i); String s=myEdTx.toString();
int tInt = Integer.parseInt(s);`
答案 0 :(得分:2)
要获取EditText内容的字符串表示形式,请使用:
String s = myEdTx.getText().toString();
直接在EditText上使用toString()可以得到如下内容:
android.widget.EditText{40d31450 VFED..CL ......I. 0,0-0,0}
......这显然不是你想要的。
答案 1 :(得分:0)
您假设用户在文本字段中输入了一个数字,但这是不安全的,因为您只获得一个字符串文本(理论上也可以包含非数字)。当我没记错的时候,你可以在android中调整一个文本字段,用户只能输入数字,这应该更适合你。
答案 2 :(得分:0)
NumberFormatException
,因此最好处理此异常。
String s = myEdTx.getText().toString();
try {
int tInt = Integer.parseInt(s);
} catch( NumberFormatException ex ) {
//do something if s is not a number, maybe defining a default value.
int tInt = 0;
}
答案 3 :(得分:0)
因此,您尝试解析的当前字符串是行中的空格 和整数类无法解析该空格。所以使用以下代码。
String s=myEdTx.getText().toString();
int tInt = Integer.parseInt(s.trim());
答案 4 :(得分:0)
String s = myEdtx.getText().toString().trim();
int iInt = Integer.parseInt(s);