2012-12-20 35 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());