onClickListner无法传递“ this”参数错误

时间:2019-09-18 16:45:00

标签: android

我在这里做错了什么?我无法通过onClickListner传递“ this”参数错误。

 public void onClick(View V){
            txt.setText("Button is Clicked");

            Intent i = new Intent(Intent.ACTION_CALL);
            String encodedHash = Uri.encode("#");
            i.setData(Uri.parse("tel:"+"*804"+encodedHash));

            if (ActivityCompat.checkSelfPermission(this,
                    Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
            {
                return;
            }

            startActivity(i);
        }

2 个答案:

答案 0 :(得分:0)

请实现View.OnClickListener,因为您必须与onClick()方法一起实现此接口。或者您可以在下面尝试以下代码:

public Button btnClick;
btnClick=view.findViewById(R.id.btn_click);

btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
  txt.setText("Button is Clicked");

        Intent i = new Intent(Intent.ACTION_CALL);
        String encodedHash = Uri.encode("#");
        i.setData(Uri.parse("tel:"+"*804"+encodedHash));

        if (ActivityCompat.checkSelfPermission(this,
                Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
        {
            return;
        }

        startActivity(i);
        }
    });

答案 1 :(得分:0)

您的问题未提供足够的信息,但是我认为您在传递OnClickListener而不是Activity时遇到错误,因为您正在定义内部匿名类,因此this指这个匿名类。 如果要访问您的外部/容器类,则应这样称呼它:OuterClass.this或(在kotlin中为this@OuterClass):

public void onClick(View V){ txt.setText("Button is Clicked");

        Intent i = new Intent(Intent.ACTION_CALL);
        String encodedHash = Uri.encode("#");
        i.setData(Uri.parse("tel:"+"*804"+encodedHash));

        if (ActivityCompat.checkSelfPermission(MyActivity.this,
                Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
        {
            return;
        }

        startActivity(i);
    }