【发布时间】:2014-10-09 14:47:44
【问题描述】:
这是一个我已经尝试修复了 3 个小时的问题。 该应用程序的工作原理: 我有一个 txt 文件中的数字列表(在资产中)。我正在逐行读取该 txt 文件,并将 TextView 的文本设置为当前行。现在我必须在 EditText 中输入相同的数字。但是如果我比较 EditText 和当前行,应用程序会说它们不一样,尽管它们是。
我有一个不同编号的资产文件,如下所示:
3
9
8
14
[finish]
[finish] 标签将在稍后使用,以便我可以完成应用程序,但现在完全没有必要。
我已经定义了以下字符串和视图:
public String curval;
public EditText etds;
public TextView curvalte;
我的 onCreate() 方法的一部分:
etds = (EditText)findViewById(R.id.editText1);
buttonds = (Button)findViewById(R.id.button1);
curvalte = (TextView)findViewById(R.id.textView2);
try {
inds = this.getAssets().open(assetname);
} catch (IOException e) {
e.printStackTrace();
}
readerds = new BufferedReader(new InputStreamReader(inds));
现在我正在从文件中读取并将其设置为 curvalte 的文本:
curval = readerds.readLine();
curvalte.setText(curval);
而且效果很好。
但是您必须在 EditText 中键入现在在 curvalte 中显示的相同数字。
如果我尝试使用 curval 对 EditText 中的文本使用 equals(),它总是说 EditText.getText().toString 不等于 curval:
if(etds.getText().toString().equals(curval.toString()){
// The code here
}else{
// This is what I get
Toast.makeText(getBaseContext(), "Wrong answer!", Toast.LENGTH_LONG).show();
}
即使我输入了正确的答案,我也会得到那个吐司说它是错误的。 删除 .toString() 并没有解决它,我不知道我可以尝试什么。
也许是因为字符串实际上包含一个数字?
【问题讨论】:
-
为什么是
etds.getText().toString()而不是etds.getText()? -
改为尝试使用 etds.getText().toString().equals(curvalte.getText().toString()) 看看,取决于你什么时候打电话
-
@Jashaszun
getText返回Editable而不是字符串。 -
您是否尝试记录字符串,只是为了确认它们是相同的?也许你应该使用
strip()。 -
@Tom 哦,那没关系。 (我通常不使用 Android。)
标签: java android string integer equals