TextView中的链接没有响应

时间:2014-08-22 21:10:38

标签: android textview

我正在使用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

提前致谢。

2 个答案:

答案 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