无法理解这一行代码

时间:2016-02-05 04:59:12

标签: java android

如果有人想打破这段代码并向我解释。我会感恩的。

我在视图上遇到错误(无法解析符号),不确定我是否应该用特定视图替换它?

顺便说一句,这是一个onClick方法。

"else if(view.getId()==R.id.Button9){}"

我从这段代码中理解的是它说“if”“view”无论viewid在这里()? ==< - 与R.id.button9有关 然后运行这段代码。我甚至关闭?感谢。

有点背景故事,我创建了一个ImageButton,当它被点击时,我想要清除屏幕。我已在onclicklistener上构建并在我的用户公共类上实现了view.OnClickListener

CLEARCANVAS = (ImageButton) findViewById(R.id.button9);
CLEARCANVAS.setOnClickListener(this);

@Override
public void onClick(View v) {
    if (view.getId()==R.id.button9);
}

4 个答案:

答案 0 :(得分:3)

您的View参数为v,而不是view

将其更改为v,它将编译:

@Override
public void onClick(View v) {
   //if (view.getId()==R.id.button9){
   if (v.getId() == R.id.button9){
      //handle button9 click
   }
}

另一种常见的方法是为每个可点击元素定义一个单独的点击侦听器,例如:

    clearCanvas = (ImageButton) findViewById(R.id.button9);
    clearCanvas.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Handle button9 click
        }
    });

答案 1 :(得分:0)

如果错误与R类相关,那么您需要重建项目,否则如果它仍然无法正常工作,则必须重新启动正在使用的IDE。基本上如果您使用Eclipse,我建议更改为Android Studio,因为谷歌已经弃用了对eclipse的android支持。无法解决符号错误基本上意味着项目没有特定的类引用或您尝试使用的任何内容。

答案 2 :(得分:0)

就是这样。

您有button1button10的10个按钮。所有内容都存储在R.java文件中以识别它。

假设您要为button9执行onClick事件。您可以为所有按钮创建一个通用的onClick事件。

@Override
public void onClick(View v) {
//now all the 10 buttons have the same onclick event.
}

现在要区分点击了哪个按钮,您需要使用它的ID。

@Override
public void onClick(View v) {
if (v.getId()==R.id.button9){
  Toast.makeText(context, "Button 9 Clicked!", Toast.LENGTH_SHORT).show();
}
if (v.getId()==R.id.button8){
  Toast.makeText(context, "Button 8 Clicked!", Toast.LENGTH_SHORT).show();
}
...
}

因此,R.java是XML中的UI对象与java代码之间的链接。

您需要R.java从UI中识别每个对象。

这是自动完成的。如果您收到错误消息,说无法解决RYou might want to re-build or clean your project

答案 3 :(得分:0)

您只需要使用v.getId()更改view.getId()。

在OnClick方法中传递的视图是单击的视图,因此它将检查单击了哪个Id。