我在这里做错了什么?我无法通过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);
}
答案 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);
}