[英]ClickableSpan - Class is not abstract and does not override abstract method
我對 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));
}
});
}
}
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
}
};
您的匿名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){ }
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.