有人可以帮助我,我在这里自杀了。所以在我的活动中我有这个代码,应用程序不断显示CurrentQ与答案不等(currentQ.getODG() != answer.getText())
我可以通过Log.dat看到Log.d,单词是相同的。我无法理解我做错了什么。
08-25 05:28:45.125:D / yourans(25316):naživotumrakunaživotumraku 这是来自log cat
RadioGroup grp = (RadioGroup) findViewById(R.id.radioGroup1);
answer = (RadioButton) findViewById(grp.getCheckedRadioButtonId());
Log.d("yourans", currentQ.getODG() + " " + answer.getText());
if (currentQ.getODG().equals(answer.getText())) {
answer.setBackgroundResource(R.drawable.radiotocan);
Toast poruka1 = Toast.makeText(getApplicationContext(), "Točno!",
Toast.LENGTH_LONG);
View vieew1 = poruka1.getView();
// vieew.setBackgroundColor(Color.parseColor("#BD8BDC"));
vieew1.setBackgroundResource(R.drawable.toast1);
poruka1.setView(vieew1);
poruka1.setGravity(Gravity.CENTER_HORIZONTAL, 1, 1);
poruka1.show();
score1++;
Log.d("score1", "Your score" + score1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
answer.setBackgroundResource(R.drawable.radiomain);
}
}, 300);
}
else if (currentQ.getODG() != answer.getText()) {
answer.setBackgroundResource(R.drawable.radionetocan);
Toast poruka2 = Toast.makeText(getApplicationContext(),
"Netočno, točan odgovor je:" + currentQ.getODG(),
Toast.LENGTH_LONG);
View vieew2 = poruka2.getView();
// vieew.setBackgroundColor(Color.parseColor("#BD8BDC"));
vieew2.setBackgroundResource(R.drawable.toast);
poruka2.setView(vieew2);
poruka2.setGravity(Gravity.CENTER_HORIZONTAL, 1, 1);
poruka2.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
answer.setBackgroundResource(R.drawable.radiomain);
}
}, 300);
}
答案 0 :(得分:1)
尝试
if(currentQ.getODG().equalsIgnoreCase(answer.getText()))
而不是
if(currentQ.getODG()!=answer.getText())
希望它有所帮助!
答案 1 :(得分:1)
Java使用双等号来检查两个变量指向的对象是否是同一个对象,不是它们是否相同。由于两个String
都是由两个单独的方法调用返回的,因此它们永远不会成为同一个对象。
相反,您需要使用String
类中的一种相等测试方法:
.equals(String b)
测试两个字符串是否完全相同。.equalsIgnoreCase(String b)
测试两个字符串是否相同,忽略它们是大写还是小写。您可以在String class的文档中找到更多选项,只需查看public methods列表。
在您的情况下,请更改此行:
else if (currentQ.getODG() != answer.getText()) {
读起来像:
else if (!currentQ.getODG().equals(answer.getText())) {
但为了更灵活地识别答案,请使用.equalsIgnoreCase()
,如下所示:
else if (!currentQ.getODG().equalsIgnoreCase(answer.getText())) {