SetOnClickListener和View视图 - 无法解析符号

时间:2018-03-31 13:17:08

标签: java android

我已经在java类上导入了android.view.View,但是下面的代码仍然有SetOnClickListener和View视图未解析。不确定这是否已链接但我使用了第二个代码中观察到的另一个onClick和View视图方法。

    final ImageButton btnTest =(ImageButton) findViewById(R.id.passVisibilityStatus);
btnTest.setOnClickListener(new View.OnClickListener()
{
    public void changePassVisibility (View view)
    btnTest.setSelected(!btnTest.isPressed());

    if (btnTest.isPressed()) {
        btnTest.setImageResource(R.drawable.PassVisible);
    } else {
        btnTest.setImageResource(R.drawable.PassInvisible);
    }
}}

以前的代码,以防它们出现问题:

public void loginButtonClicked(View view) {
    String email = loginEmail.getText().toString().trim();
    String pass = loginPass.getText().toString().trim();

    if (!TextUtils.isEmpty(email) && !TextUtils.isEmpty(pass)) {
        mAuth.signInWithEmailAndPassword(email, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    checkUserExists();
                }
            }
        });
    }
}

public void checkUserExists() {
    final String user_id = mAuth.getCurrentUser().getUid();
    mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.hasChild(user_id)) {
                Intent loginIntent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(loginIntent);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

4 个答案:

答案 0 :(得分:1)

您需要覆盖 OnClickListener中的 OnClick 方法。

您的新代码应为:

btnTest.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // your desired code goes here.
    }
});

编辑,解决方案

btnTest.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        public void changePassVisibility (View view)
btnTest.setSelected(!btnTest.isPressed());

if (btnTest.isPressed()) {
    btnTest.setImageResource(R.drawable.PassVisible);
} else {
    btnTest.setImageResource(R.drawable.PassInvisible);
}
    }
});

答案 1 :(得分:0)

您需要实现onClick()方法

btnTest.setOnClickListener(new View.OnClickListener()
{
//add this method
@Override
public void onClick(View v) {
  // do something when the button is clicked
}
}

答案 2 :(得分:0)

你必须像这样设置监听器

scanner.nextLine()

答案 3 :(得分:0)

你必须这样做,因为FlyingNades说,但我认为你真正的问题是你没有在正确的位置编写这些代码,确保你在OnCreate()方法中调用“setOnClickListener”,这应该解决你的问题。