首页 > 解决方案 > Activity 无法转移到 onclicklistener

问题描述

我制作了一个创建登录页面的最简单的程序,但是,我无法OnClickListener向我的按钮添加一个,我不知道为什么。我对 Android Studio 真的很陌生,不知道该怎么做。当我将鼠标悬停在它说的错误上时"In View cannot be applied"

我已经尝试了在互联网上找到的这些代码,但错误并没有消失,并且机器说@Override不会覆盖上面的内容。

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

    regist1 = (Button)findViewById(R.id.btnregister1);
    regist1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent teachtoregist = new Intent(TeacherInJ.this, TeacherRegisterInJ.class);
            startActivity(teachtoregist);
        }
    });

    etUsername = (EditText) findViewById(R.id.editText2);
    etPassword = (EditText) findViewById(R.id.editText3);
    bLogin = (Button) findViewById(R.id.btnlogin);


    bLogin.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btnlogin:
            //Start activity one
            break;

标签: javaandroid

解决方案


当我将鼠标悬停在错误上时,它显示“无法应用在视图中”。

我已经尝试了在 Internet 上找到的这些代码,但错误并没有消失,并且机器说 @override 不会覆盖上面的内容。

上述两个问题都是因为你没有在implements你的Activity中添加关键字。您需要添加它,以便 Activity 可以被按钮视为OnClickListener界面。

您需要执行以下操作(请参阅代码中的注释):

// see below the implements View.OnClickListener line that
// need to be added so the Activitiy can be regarded as the listener.
public class TeacherInJ extends AppCompatActivity implements View.OnClickListener {
  ...

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

        ...

        // now you can use this as the listener. It's because you have
        // set the current Activity class as the View.OnClickListener
        // this is refer to current Activity object.
        bLogin.setOnClickListener(this);
    }

    // Now you can add the @Override to the onClick method from
    // the View.OnClickListener.
    @Override
    public void onClick(View v) {
      switch (v.getId()) {
        case R.id.btnlogin:
          //Start activity one
          break;
      }
    }
}

推荐阅读