2012-12-20 37 views
2

我有数组的一些网址,当我点击文本查看它需要打开网页,但即时得到错误我的代码是设置自动连接属性

LinearLayout l = new LinearLayout(this); 
    l.setOrientation(LinearLayout.VERTICAL); 
    String[] textArray={"www.google.co.in","www.gmail.com","www.facebook.com"}; 
    int length=textArray.length; 
    LinearLayout layout = new LinearLayout(this); 
    setContentView(layout); 
    layout.setOrientation(LinearLayout.VERTICAL);   
    for(int i=0;i<length;i++) 
    { 
     TextView tv=new TextView(getApplicationContext()); 
     tv.setText(textArray[i]); 
     layout.addView(tv); 
     Linkify.addLinks(tv, Linkify.WEB_URLS); 
     tv.setMovementMethod(LinkMovementMethod.getInstance()) 

logcat的输出

12-20 16:08:38.623: E/InputEventReceiver(2170): Exception dispatching input event. 
12-20 16:08:38.623: E/MessageQueue-JNI(2170): Exception in MessageQueue callback: handleReceiveCallback 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.app.ContextImpl.startActivity(ContextImpl.java:944) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.app.ContextImpl.startActivity(ContextImpl.java:931) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.content.ContextWrapper.startActivity(ContextWrapper.java:284) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.text.style.URLSpan.onClick(URLSpan.java:62) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.widget.TextView.onTouchEvent(TextView.java:7397) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.View.dispatchTouchEvent(View.java:7239) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.app.Activity.dispatchTouchEvent(Activity.java:2410) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.View.dispatchPointerEvent(View.java:7419) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.os.MessageQueue.nativePollOnce(Native Method) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.os.MessageQueue.next(MessageQueue.java:125) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.os.Looper.loop(Looper.java:124) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at android.app.ActivityThread.main(ActivityThread.java:5039) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at java.lang.reflect.Method.invokeNative(Native Method) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at java.lang.reflect.Method.invoke(Method.java:511) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-20 16:08:38.804: E/MessageQueue-JNI(2170): at dalvik.system.NativeStart.main(Native Method) 
12-20 16:08:38.804: D/AndroidRuntime(2170): Shutting down VM 
12-20 16:08:38.813: W/dalvikvm(2170): threadid=1: thread exiting with uncaught exception (group=0x40a70930) 
12-20 16:08:38.913: E/AndroidRuntime(2170): FATAL EXCEPTION: main 
12-20 16:08:38.913: E/AndroidRuntime(2170): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.app.ContextImpl.startActivity(ContextImpl.java:944) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.app.ContextImpl.startActivity(ContextImpl.java:931) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.content.ContextWrapper.startActivity(ContextWrapper.java:284) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.text.style.URLSpan.onClick(URLSpan.java:62) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.widget.TextView.onTouchEvent(TextView.java:7397) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.View.dispatchTouchEvent(View.java:7239) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.app.Activity.dispatchTouchEvent(Activity.java:2410) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.View.dispatchPointerEvent(View.java:7419) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.os.MessageQueue.nativePollOnce(Native Method) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.os.MessageQueue.next(MessageQueue.java:125) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.os.Looper.loop(Looper.java:124) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-20 16:08:38.913: E/AndroidRuntime(2170):  at dalvik.system.NativeStart.main(Native Method) 
+0

看起来就像你在一个活动不是,你必须使用NEW_TASK标志。此外,请重新格式化您的logcat,这是很难看 – njzk2

回答

0

嗨,我想你应该使用WebView打开任何链接。你可以从这里得到一个想法,如何处理WebView的简单示例。链接如下: - WebView Example。 我希望这可以帮助你很多。

我觉得在你的logcat你的问题的解决方案可以通过以下链接满足: - Your Logcat Issue

0

看来你已经开始从出侧Activity

简单简短的回答的上下文的Activity你的代码,你开始的活动确保该背景下,启动它是一个Activity否则应确保其用意标志设置为Intent.FLAG_ACTIVITY_NEW_TASK

例如

Intent intent = new Intent(mContext, SomeActivity.class); 
intent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK); 
.. 
... 
.. 

mContext.startActivity(intent); 
+0

这不是一个意图。这是一个Recycler项目中的“自动链接”。由于没有实际的代码启动链接,这可能是有问题的。我自己也没有解决这个问题... – santafebound

0

检查Nammari's响应,或者如果有一个getView()方法中的代码,以避免该异常

“从一个活动上下文之外调用startActivity()需要 的FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的“

可能你需要:

LinearLayout l = new LinearLayout(parent.getContext()); 
... 
... 
LinearLayout layout = new LinearLayout(parent.getContext()); 

,而不是

LinearLayout l = new LinearLayout(this); 
... 
... 
LinearLayout layout = new LinearLayout(this); 
2

另外:如果你表现出在片段适配器链接,不要创建它像这样

adapter = new ListAdapter(getActivity().getApplicationContext(),mStrings,dispWidth,dispHeight); 

改为致电

adapter = new ListAdapter(getActivity(),mStrings,dispWidth,dispHeight); 

适配器在这两种情况下工作正常,但链接只在最后一个工作。

+0

这对我来说伎俩!谢谢 ! – nios

0

变化LinearLayout l = new LinearLayout(this);LinearLayout l = new LinearLayout(getParent.getApplicationContext());