安卓系统--自动链接

3
有没有办法将包含在ListView中的特定TextView链接化?我尝试使用android:autoLink="all",但没有成功。我收到了上下文错误的消息。
还需要注意的是:ListView是ViewFlipper中的第二个视图。
我也尝试过:
            View mItemView = mAdapter.getView(2, null, null);
        TextView infoText = (TextView) mItemView.findViewById(R.id.rowText2);
        Linkify.addLinks(infoText, Linkify.ALL);

在适配器绑定到ListView并切换视图后,仍然没有成功。

以下是堆栈跟踪:

06-03 21:19:25.180: ERROR/AndroidRuntime(1214): Uncaught handler: thread main exiting due to uncaught exception
06-03 21:19:25.219: ERROR/AndroidRuntime(1214): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.app.ApplicationContext.startActivity(ApplicationContext.java:550)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:248)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.text.style.URLSpan.onClick(URLSpan.java:62)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:216)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.widget.TextView.onTouchEvent(TextView.java:6560)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.View.dispatchTouchEvent(View.java:3709)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.os.Looper.loop(Looper.java:123)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at android.app.ActivityThread.main(ActivityThread.java:4363)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at java.lang.reflect.Method.invokeNative(Native Method)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at java.lang.reflect.Method.invoke(Method.java:521)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-03 21:19:25.219: ERROR/AndroidRuntime(1214):     at dalvik.system.NativeStart.main(Native Method)

有什么想法吗?

先谢谢了!!!

3个回答

7
这对我很有帮助: http://www.anddev.org/view-layout-resource-problems-f27/linkify-problem-t14779.html 基本上,当你不需要使用它时,不要使用getApplicationContext()(从链接中借用)。
好的(linkify起作用)。
CustomAdapter mAdapter = new CustomAdapter(this, itemList);

BAD (链接化在运行时失败:从外部调用startActivity()...)

Context mContext = getApplicationContext();
CustomAdapter mAdapter = new CustomAdapter(mContext, itemList);

谢谢,我知道了一个简单的解决方案。我正在做你说的事情,使用这个而不是getApplicationContext(),非常好用。谢谢。 - Chrispix

0

那个堆栈跟踪报错是因为你在没有设置特定标志的情况下,在活动上下文之外调用了startActivity()。它似乎与你的Linkify无关。


真的抱歉,我忘了提到 Linkify 正常工作,但当你点击电话号码并尝试启动意图时,它会崩溃并显示该错误。有什么想法吗? - Ryan

0

我遇到了同样的错误,为此苦苦挣扎了4天...最终找到了解决方案。

我告诉你我是怎么做的...

当你在一个类的onCreate中使用Linkify时,它可以完美地工作。但是当你创建一个方法并尝试在其中调用Linkify时,它就无法工作并且会给出相同的错误。

如果你必须调用另一个方法,请将onCreate的上下文传递给它,并使用它创建Textviews或其他内容...这似乎与第一个答案有点相符...

Rajesh


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接