7

私は自分のサイトからいくつかのHTMLを取得し、それをTextViewに入れています。このHTMLには、Webページや電子メールなどを指すアンカータグが含まれている可能性があります。ユーザーがクリックするとデフォルトのブラウザがWebページを開くように、これらのリンクをクリック可能にしようとしています。この回答の指示に従ってこれを行っています-TextViewのリンクをクリック可能にするにはどうすればよいですか?と他のいくつかのオンラインソース。

だから私のコードはこのようなものです:

TextView para=new TextView(getApplicationContext());    
LayoutParams lpfortext=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lpfortext.setMargins(10, 10, 10, 10);
para.setText(Html.fromHtml(e.html()));
para.setMovementMethod(LinkMovementMethod.getInstance());
para.setLinksClickable(true); //error exists on removing this
para.setAutoLinkMask(Linkify.ALL);  //error exists on removing this
para.setLayoutParams(lpfortext);

しかし、実際にアプリ内のリンクをクリックすると(ICS電話で、エミュレーターでまだテストされていません)、次のエラーが発生します(スタックトレースのスナップショット、最後に全文):

11-18 13:17:51.503: E/AndroidRuntime(6010): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
11-18 13:17:51.503: E/AndroidRuntime(6010):     at android.app.ContextImpl.startActivity(ContextImpl.java:1095)
11-18 13:17:51.503: E/AndroidRuntime(6010):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
11-18 13:17:51.503: E/AndroidRuntime(6010):     at android.text.style.URLSpan.onClick(URLSpan.java:62)
11-18 13:17:51.503: E/AndroidRuntime(6010):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)

エラーの原因となる可能性のあるアイデアとその修正方法はありますか?

編集:要求に応じて、以下の完全なトレース-

11-18 13:45:09.741: E/AndroidRuntime(7946): FATAL EXCEPTION: main
11-18 13:45:09.741: E/AndroidRuntime(7946): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.app.ContextImpl.startActivity(ContextImpl.java:1095)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.text.style.URLSpan.onClick(URLSpan.java:62)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.widget.TextView.onTouchEvent(TextView.java:8835)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.View.dispatchTouchEvent(View.java:5579)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1965)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1734)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1982)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1441)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.app.Activity.dispatchTouchEvent(Activity.java:2421)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1930)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.View.dispatchPointerEvent(View.java:5759)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2970)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2529)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:869)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2538)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.os.Looper.loop(Looper.java:154)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at android.app.ActivityThread.main(ActivityThread.java:4945)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at java.lang.reflect.Method.invokeNative(Native Method)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at java.lang.reflect.Method.invoke(Method.java:511)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-18 13:45:09.741: E/AndroidRuntime(7946):     at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

10

TextView非アクティビティコンテキストでparaオブジェクトを初期化するようです。これは、アクティビティを開始するに設定Intent.FLAG_ACTIVITY_NEW_TASKする必要があります。Intent

これは問題を解決します

TextView para = new TextView(this);これはActivityコンテキストを参照します

于 2012-11-18T08:20:22.393 に答える
10

XMLからTextViewを拡張する場合は、必ず「getActivity()。getLayoutInflater()」を使用してTextViewを含むレイアウトを拡張してください。それは私にとって解決しました。

于 2014-01-14T21:52:35.247 に答える