Java ClickableSpan-类不是抽象的,并且不重写抽象方法
我是Android开发的新手。自从我尝试添加打开弹出窗口的选项(onClick())以来,我一直遇到这个错误 看起来错误出现在第29->36行,因为我在注释掉该部分后不会得到这个错误 有人知道发生了什么吗 我的代码:Java ClickableSpan-类不是抽象的,并且不重写抽象方法,java,android,Java,Android,我是Android开发的新手。自从我尝试添加打开弹出窗口的选项(onClick())以来,我一直遇到这个错误 看起来错误出现在第29->36行,因为我在注释掉该部分后不会得到这个错误 有人知道发生了什么吗 我的代码: import android.content.Intent; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; impo
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;
public class Login extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
TextView textView = findViewById(R.id.PrivacyPolicyConfirmation);
String text = "I hereby confirm to have read and understood the Privacy Policy";
SpannableString checkBoxSS = new SpannableString(text);
ClickableSpan clickableSpanPrivacyPolicy = new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);
ds.setUnderlineText(true);
}
};
checkBoxSS.setSpan(clickableSpanPrivacyPolicy, 49, 63, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setHighlightColor(Color.TRANSPARENT);
textView.setText(checkBoxSS);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Login.this, PopUpPrivacy.class));
}
});
}
}
您的匿名
ClickableSpan
类必须实现onClick(View-View)
或声明为抽象:
ClickableSpan clickableSpanPrivacyPolicy = new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);
ds.setUnderlineText(true);
}
@Override
public void onClick(View v){ }
};
该类是一个抽象类,这意味着某些方法已经定义但尚未实现。在您的例子中,您没有实现抽象方法,这就是为什么会出现错误。因此,您需要像这样声明onClick()
方法:
ClickableSpan clickableSpanPrivacyPolicy = new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);
ds.setUnderlineText(true);
}
@Override
public void onClick(View widget) {
// Do something
}
};
第29行是
可点击span
块吗?