Android OnClick方法无法使用if-else语句正确运行
我的代码中有一个if-else语句 假设,如果我用(lat(“1.2960994”)和lng(“103.848237”)单击Textview,它将带我进入下一个意图,即map.classAndroid OnClick方法无法使用if-else语句正确运行,android,onclick,textview,Android,Onclick,Textview,我的代码中有一个if-else语句 假设,如果我用(lat(“1.2960994”)和lng(“103.848237”)单击Textview,它将带我进入下一个意图,即map.class if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237")) 然而,当我点击它(textview)时,它并没有带我进入下一个意图。事实上,它给了我“else”代码 我不知道我的代码有什么问题,它只是不能显示
if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237"))
然而,当我点击它(textview)时,它并没有带我进入下一个意图。事实上,它给了我“else”代码
我不知道我的代码有什么问题,它只是不能显示“如果”部分。
有人能帮我吗?
先谢谢你
这是我源代码的一部分:
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();
}
}
}
从这里很难看出什么,但以下是我的建议: 1) 使用适当的Java命名约定。如果
KEY\u LATITUDE
和KEY\u LONGITUDE
不是常量,则不应将它们全部设为大写。如果它们是常量,那么将它们与其他东西进行比较似乎是毫无意义的
2) KEY\u纬度
和KEY\u经度
不得为这些值。您需要调试并找出它们是什么值。要执行此操作,请尝试以下日志语句:
Log.d(“坐标”,“纬度:+KEY\u纬度+”长:+KEY\u经度)代码>
查看实际值是什么。使用LogCat搜索coords
标记。从中,您可以看到您是否得到了预期的正确比较
编辑:我注意到另一件事。您正在对KEY\u LATITUDE
和KEY\u LONGITUDE
值调用toString()
。它们不是已经有字符串了吗.equals()
比较对象的相等性。在您的情况下,您可能需要尝试以下方法:
if(KEY_LATITUDE.toString().equals("1.2960994") && KEY_LONGITUDE.toString().equals("103.848237"))
试着替换
if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237"))
与
我认为您的问题在于,我所看到的onClick方法中没有定义KEY_纬度和KEY_经度。这可能会导致一个问题,因为OnClickListener是一个匿名的内部类,所以不能使用任何变量(超类的类变量除外)。即使不是这样,您也应该有代码直接获取视图“v”的位置,因为就我所知,这是您单击的视图,也是您唯一关心的视图。您可以尝试在创建TextView时将坐标存储在标记中(如tv.setTag([latCoord,longCoord])
),然后通过v.getTag()
在onClick方法中访问它。您是否检查了这两个值以确保它们都是真的,键纬度等于(“1.2960994”)
和键经度等于(“103.848237”
?是钥匙纬度
和钥匙经度
字符串
s?钥匙经度和钥匙经度是什么类型?你能记录这些钥匙的实际值并发布它们吗?@codeMagic两者都是true@StefanBeike它们是漂浮的,但我宣布它们为弦这是它传递出来的08-1409:15:10.280:D/pluum_53500(23834):从网络获取坐标=(1.3800584103.8452073)为:Null我的意思是,我更改了代码,数字..忘了提及that@randomize您已经解决了这个问题吗?为什么要将lat/long值转换为字符串对象,而不仅仅是比较它们的原始形式?
if(KEY_LATITUDE.equals("1.2960994") && KEY_LONGITUDE.equals("103.848237"))
if(KEY_LATITUDE.toString().equals("1.2960994") && KEY_LONGITUDE.toString().equals("103.848237"))