簡體   English   中英

ClickableSpan - 類不是抽象的,不會覆蓋抽象方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM