我正在使用JSON解析一堆数据并将其放入textview中,我希望能够检测链接并在单击时转到这些链接。我已经能够使用以下代码检测链接:
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/txtTitle"
android:textColor="#000000"
android:layout_toRightOf="@+id/imgThumbnail"
android:layout_marginTop="6dip"
android:layout_marginLeft="6dip"
android:autoLink="all"
android:linksClickable="true">
</TextView>
点击突出显示的链接后,它会崩溃应用程序,但会出现此错误:
08-22 16:57:33.632 23350-23350/us.bisonsoftware.tab2 E/MessageQueue-JNI﹕ android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
at android.app.ContextImpl.startActivity(ContextImpl.java:1402)
at android.app.ContextImpl.startActivity(ContextImpl.java:1389)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:323)
at android.text.style.URLSpan.onClick(URLSpan.java:75)
at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:217)
at android.widget.TextView.onTouchEvent(TextView.java:9235)
at android.view.View.dispatchTouchEvent(View.java:8135)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2295)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1622)
at android.app.Activity.dispatchTouchEvent(Activity.java:2565)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2243)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2295)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1622)
at android.app.Activity.dispatchTouchEvent(Activity.java:2565)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2243)
at android.view.View.dispatchPointerEvent(View.java:8343)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4743)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4167)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4221)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4190)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4301)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4198)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4358)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4167)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4221)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4190)
at android.view.ViewRootImpl
提前致谢。
答案 0 :(得分:0)
在我看来,您所看到的错误可能与错误的上下文有关。如果要设置TextView
的文字,请确保初始化context
的{{1}}是正确的。例如:
TextView
再次确保传递此上下文属于活动。只是编写TextView tv = new TextView(YourActivityName.this);
可能会导致问题,具体取决于您定义TextView的位置。您是否在this
等内使用this
,那么该上下文应该没问题。如果您在任何runnable或OnCreate
等内部定义TextView,那么这可能会导致您面临的问题。
希望这可以帮助您识别。有关更准确的答案,请发布您定义TextView的相关Java代码。
答案 1 :(得分:-1)
你有一件事要在你的代码中删除&#34; +&#34;在id附近你的形象拇指指甲
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/txtTitle"
android:textColor="#000000"
android:layout_toRightOf="@id/imgThumbnail"
android:layout_marginTop="6dip"
android:layout_marginLeft="6dip"
android:autoLink="all"
android:linksClickable="true">
你说它是链接,但你没有任何网址,你很难对文本视图进行编码 在android:text