Java 错误:无法解析setOnClickListener

Java 错误:无法解析setOnClickListener,java,android,android-studio,Java,Android,Android Studio,我遇到了一个问题,无法在Android Studio中解决。setOnClickListener将保持红色,除非我去掉“loseStarter1”按钮名,否则将无法工作。 注意:Starter1是一个按钮,我试图让它在用户单击时消失。当我引入loseStarter1按钮时,真正的代码就开始了 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; im

我遇到了一个问题,无法在Android Studio中解决。setOnClickListener将保持红色,除非我去掉“loseStarter1”按钮名,否则将无法工作。 注意:Starter1是一个按钮,我试图让它在用户单击时消失。当我引入loseStarter1按钮时,真正的代码就开始了

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class game1 extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game1);
}

Button loseStarter1;

    loseStarter1 = (Button) findViewById(R.id.Starter1);
    loseStarter1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            loseStarter1.setVisibility(View.GONE);
            }
        })

}

非常感谢。

在代码下面移动
onCreate()


按钮变量声明和OnClickListener初始化在onCreate()方法之外。使用以下代码:

package com.cutting_edge_tech.mentalenhancementapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class game1 extends AppCompatActivity {

    private Button loseStarter1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game1);

        loseStarter1 = (Button) findViewById(R.id.Starter1);
        loseStarter1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loseStarter1.setVisibility(View.GONE);
                }
        });
    }
}

您缺少一个分号来结束新的View.OnClickListener(){…语句以及不在方法内部的块

不仅要将此代码移到onCreate方法中,还要确保以分号结尾

loseStarter1 = (Button) findViewById(R.id.Starter1);
loseStarter1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        loseStarter1.setVisibility(View.GONE);
        }
    }); // Add the semicolon here
应该是这样的:

public class game1 extends AppCompatActivity {

    Button loseStarter1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game1);

        loseStarter1 = (Button) findViewById(R.id.Starter1);
        loseStarter1.setOnClickListener(new View.OnClickListener() {
            @Override
             public void onClick(View v) {
                loseStarter1.setVisibility(View.GONE);
            }
        }); //added semicolon

    } // ends onCreate method
} // ends class
我就是这样做的

1) 首先让类实现interface View.OnClickListener,这样可以处理button clic事件:

public class game1 extends AppCompatActivity implements View.OnClickListener;
2) 其次,创建接口方法来处理事件

@Override
public void onClick(View view)
{
    if(view.getId()==R.id.Starter1)
    {
       view.setVisibility(View.GONE);
    }
}
3) OnCreate方法是查找对象和设置属性的最佳方法

@Override
protected void onCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_game1);

 loseStarter1= (Button) findViewById(R.id.Starter1);

 if(loseStarter1!=null){
   loseStarter1.setOnClickListener(this);
 }

}
所有代码:

package com.cutting_edge_tech.mentalenhancementapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class game1 extends AppCompatActivity implements View.OnClickListener  {

private Button loseStarter1;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_game1);

      loseStarter1 = (Button) findViewById(R.id.Starter1);
      if(loseStarter1!=null){
        loseStarter1.setOnClickListener(this);
      }
  }

  @Override
  public void onClick(View view)
  {
     if(view.getId()==R.id.Starter1)
     {
      view.setVisibility(View.GONE);
     }
  }
}
忠告: 将类重命名为Game1

package com.cutting_edge_tech.mentalenhancementapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class game1 extends AppCompatActivity implements View.OnClickListener  {

private Button loseStarter1;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_game1);

      loseStarter1 = (Button) findViewById(R.id.Starter1);
      if(loseStarter1!=null){
        loseStarter1.setOnClickListener(this);
      }
  }

  @Override
  public void onClick(View view)
  {
     if(view.getId()==R.id.Starter1)
     {
      view.setVisibility(View.GONE);
     }
  }
}