Ich habe derzeit eine TextView mit einigen HTML-Telefonnummern und URL.So fangen Sie eine Ausnahme (ActivityNotFoundException) während der Verwendung von LinkMovementMethod
ich bemerkt habe, dass wir die setMovementMethod verwenden können, um diese Links klickbar zu machen:
tv.setText("Phone number is: +32485123456 and url is http://www.blabla.com");
tv.setMovementMethod(LinkMovementMethod.getInstance());
Das funktioniert ziemlich gut, aber bei einigen Geräten, es mit ActivityNotFoundException abstürzen und das ist ganz understanble. (siehe Code unten)
Diese Probleme erscheinen in meiner Entwicklerkonsole und ich kann sie nicht reproduzieren.
Das große Problem, das ich bin vor ist, dass ich nicht versuchen kann/catch-Code in meiner Tätigkeit als der Klick von LinkMovementMethod behandelt wird
Irgendeine Idee, wie ich solche Fehler vermeiden kann?
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=www.vlaamsbrabant.be/zoutleeuw (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
at android.app.Activity.startActivityForResult(Activity.java:2817)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
at android.app.Activity.startActivity(Activity.java:2923)
at android.text.style.URLSpan.onClick(URLSpan.java:62)
at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:216)
at android.widget.TextView.onTouchEvent(TextView.java:6788)
at android.view.View.dispatchTouchEvent(View.java:3766)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1896)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1159)
at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1880)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1811)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Noch nicht getestet, klingt aber nach einer perfekten Antwort! Antwort angenommen! –
Verwenden Sie es wie folgt: - setMovementMethod (new MovementCheck()); – David
Oder benutze es so.Hinzufügen: \t private statische MovementCheck sInstance; \t public static MovementCheck getInstance() { \t \t if (sInstance == null) \t \t \t sInstance = new MovementCheck(); \t \t return sInstance; \t} Auch Kontext kann von TextView erhalten werden: widget.getContext(); – Yar