我是Android开发的新手。自从尝试添加用于打开弹出窗口(onClick()
)的选项以来,我一直收到此错误。
该错误看起来在第29-> 36行,因为我在注释掉该部分后没有收到此错误。
任何人都知道发生了什么事吗?
我的代码:
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));
}
});
}
}
答案 0 :(得分:1)
ClickableSpan
类是一个抽象类,这意味着某些方法已定义但未实现。在您的情况下,您尚未实现抽象的onClick()
方法,这就是您收到错误的原因。因此,您需要像这样声明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
}
};
答案 1 :(得分:0)
您的匿名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){ }
};