我的代码中有if else语句。
假设我单击带有(lat(“1.2960994”)和lng(“103.848237”)的Textview,它会带我到下一个intent,即map.class。
if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237"))
然而,当我点击它(textview)时,它并没有让我接下来的意图。事实上,它给了我“其他”代码。
Toast.makeText(SingleMenuItemActivity.this, "Invalid MAP", Toast.LENGTH_LONG).show();
我不知道我的代码有什么问题,它只是无法显示“IF”部分。 有人能帮我吗? 提前谢谢
这是我的源代码的一部分:
public void onClick(View v) {
//TODO Auto-generated method stub
if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237")){
Intent intent = new Intent(SingleMenuItemActivity.this,map.class);
intent.putExtra("MAP",KEY_LATITUDE.toString());
intent.putExtra("MAP",KEY_LONGITUDE.toString());
startActivity(intent);
//startActivity(new Intent(SingleMenuItemActivity.this,
// map.class));
/*Intent n = new Intent(MainActivity.this,map.class);
n.putExtra("lat",latitude.get(position).toString());
n.putExtra("lng",longitude.get(position).toString());
startActivity(n); */
}
else
{
//startActivity(new Intent(SingleMenuItemActivity.this,
//map.class));
Toast.makeText(SingleMenuItemActivity.this, "Invalid MAP", Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:2)
这里很难说出来,但这些是我的建议:
1)使用适当的Java命名约定。如果KEY_LATITUDE
和KEY_LONGITUDE
不是常量,那么您不应该将它们全部限制。如果它们是常数,那么将它们与某些东西进行比较似乎毫无意义。
2)KEY_LATITUDE
和KEY_LONGITUDE
不得为这些值。您需要调试并找出它们的值。为此,请尝试这样的Log语句:
Log.d("coords", "lat: " + KEY_LATITUDE + " long: " + KEY_LONGITUDE);
查看实际值是多少。使用LogCat搜索coords
标记。从那里,你可以看到你是否得到了你期望的正确比较。
编辑:我注意到另一件事。您在toString()
和KEY_LATITUDE
值上致电KEY_LONGITUDE
。他们不是字符串吗? .equals()
比较对象的相等性。在您的情况下,您可能需要尝试这样做:
if(KEY_LATITUDE.toString().equals("1.2960994") && KEY_LONGITUDE.toString().equals("103.848237"))
答案 1 :(得分:0)
尝试替换
if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237"))
与
if(KEY_LATITUDE.toString().equals("1.2960994") && KEY_LONGITUDE.toString().equals("103.848237"))
答案 2 :(得分:0)
我认为你的问题是你的onClick方法中没有定义KEY_LATITUDE和KEY_LONGITUDE。这可能会导致问题,因为OnClickListener,如果我没有弄错,是一个匿名内部类,所以任何变量(超类的类变量除外)都不能使用。即使不是这种情况,您也应该拥有直接获取视图“v”的位置的代码,onClick会触及您,因为这是您单击的视图,也是您所关注的唯一视图。您可以尝试在创建TextView时将标记存储在标记中(如tv.setTag([latCoord, longCoord])
),然后在v.getTag()
的onClick方法中访问它。