0

我正在尝试为 Twitter 提要建立一个库,并且我已经完成了大部分工作,但是我遇到了一个问题,即我的文本中的链接在单击时会崩溃,我想看看是否有人可以指出我在正确的方向上解决这个问题。

我的推文的主要文本字段在 XML 中定义如下:

<TextView
    android:textColor="@android:color/black"
    android:id="@+id/TweetUITweetTextTextView"
    android:padding="@dimen/tweetTextPadding"
    android:layout_toRightOf="@+id/TweetUIUserProfileImageView"
    android:layout_below="@+id/TweetUIUsernameTextView"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:linksClickable="true"
    android:autoLink="web"
    android:text="@null" />

这位于我将其扩展为自定义“TweetView”类的相对布局内。

TweetView 接受一个 Tweet 对象,该对象基本上是一组字符串,其中包含从 JSON 查询解析的信息并设置这些字符串(在这种情况下,来自 Tweet 的主要文本带有锚标记,以及来自 Twitter JSON 中的 URL 元数据的其他内容feed) 到 textview 中:

      if( tweet.tweetText != null && tweet.tweetText != "" )
            tweetTextTextView.setText( Html.fromHtml( tweet.tweetTextWithLinks ) );
        else
            tweetTextTextView.setText( "" );

至于我崩溃时的错误堆栈,我有这个:

 05-30 14:42:22.206: E/InputEventReceiver(22150): Exception dispatching input event.
 05-30 14:42:22.206: E/MessageQueue-JNI(22150): Exception in MessageQueue callback: handleReceiveCallback
 05-30 14:42:22.216: E/MessageQueue-JNI(22150): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.app.ContextImpl.startActivity(ContextImpl.java:944)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.app.ContextImpl.startActivity(ContextImpl.java:931)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:284)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.text.style.URLSpan.onClick(URLSpan.java:62)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.widget.TextView.onTouchEvent(TextView.java:7536)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.View.dispatchTouchEvent(View.java:7246)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
 05-30 14:42:22.216: E/MessageQueue-JNI(22150):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
 .....

谢谢!

4

1 回答 1

3

可能您在适配器中传递了“错误”的上下文。例如应用程序上下文而不是活动上下文。

于 2013-05-30T21:03:10.343 回答