0

I have an activity with two tabs created using SlidingTabLayout and ViewPager. Each of the tab is a fragment with different layouts. Both the layouts however contain similar textviews to link to a phone number using autolink="phone".

<TextView android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/contact"
 android:text="+91-0000000000"
 android:autoLink="phone"/>

Problem: When I tap the textview in tab1(first fragment), it works perfectly and links to the phone's dialer. However doing the same in tab2(second fragment) crashes the app.

Error log:

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:1234)
            at android.app.ContextImpl.startActivity(ContextImpl.java:1221)
            at android.content.ContextWrapper.startActivity(ContextWrapper.java:322)
            at android.text.style.URLSpan.onClick(URLSpan.java:62)
            at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:217)
            at android.widget.TextView.onTouchEvent(TextView.java:7992)
            at android.view.View.dispatchTouchEvent(View.java:8393)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2431)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2173)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2317)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2790)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2278)
            at android.view.View.dispatchPointerEvent(View.java:8583)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4060)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3926)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3483)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3536)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3502)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3612)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImp

Where did I go wrong?

kds23
  • 296
  • 3
  • 17

1 Answers1

2

None of the above answers worked for me. Here's how I fixed it:

My tab fragments had custom ArrayAdapters inside which the autolink was being displayed. To initialize the adapter, the context passed was

getActivity().getApplicationContext()

I changed the context to getActivity()

David Arenburg
  • 91,361
  • 17
  • 137
  • 196
kds23
  • 296
  • 3
  • 17