デフォルトの 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;
}
}
}
setInstance
LinkMovementMethod の新しいインスタンスを作成するメソッドがありませんでした。