3

デフォルトの LinkMovementMethod をオーバーライドする必要があります。しかし、デフォルトの LinkMovementMethod を呼び出しています。コードは次のとおりです。

class MovementCheck extends LinkMovementMethod {

    @Override
    public boolean onTouchEvent(TextView widget, 
        Spannable buffer, MotionEvent event ) {
        try {
            Log.d("sg", "check check check");
            return super.onTouchEvent( widget, buffer, event ) ;
        } catch( ActivityNotFoundException ex ) {
            Log.d("sg", "Error");
            return true;
        }
    }

...

Spanned spanned = Html.fromHtml(rules.getObjects().get(0).getDescription());
rulesBody.setText(spanned);
rulesBody.setMovementMethod(MovementCheck.getInstance());

解決

正しい実装を考え出した..役に立つかもしれない:

class MovementCheck extends LinkMovementMethod {

    private static MovementCheck sInstance;

    public static MovementCheck getInstance() {
        if (sInstance == null)
            sInstance = new MovementCheck();
        return sInstance;
    }

    @Override
    public boolean onTouchEvent(TextView widget, 
        Spannable buffer, MotionEvent event ) {
        try {
            return super.onTouchEvent( widget, buffer, event ) ;
        } catch(ActivityNotFoundException ex) {
            CrashLytics.logException(ex);
            new UtilitySingleton().ShowToast("Link Broken...!!");
            return true;
        }
    }

}

setInstanceLinkMovementMethod の新しいインスタンスを作成するメソッドがありませんでした。

4

0 に答える 0