使用if else语句,OnClick方法无法正常运行

时间:2013-08-13 13:45:01

标签: android onclick textview

我的代码中有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();
    }
}



}

3 个答案:

答案 0 :(得分:2)

这里很难说出来,但这些是我的建议:

1)使用适当的Java命名约定。如果KEY_LATITUDEKEY_LONGITUDE不是常量,那么您不应该将它们全部限制。如果它们是常数,那么将它们与某些东西进行比较似乎毫无意义。

2)KEY_LATITUDEKEY_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方法中访问它。