마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

텍스트뷰 링크걸기 후 어플이 죽어요

0 추천
텍스트뷰 옵션에
android:autoLink="web"
 
이걸 넣어주고
android:text="http://www.naver.com"
 
이렇게 해줬는데 링크 누르니까
이런 에러가 뜹니다.
 
왜 그런거죠?
테스트환경은 갤러시 S 진저브레드 2.3.3 입니다.
 
 
01-09 17:25:53.804: E/AndroidRuntime(18966): FATAL EXCEPTION: main
01-09 17:25:53.804: E/AndroidRuntime(18966): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.app.ContextImpl.startActivity(ContextImpl.java:727)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.text.style.URLSpan.onClick(URLSpan.java:62)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:216)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.widget.TextView.onTouchEvent(TextView.java:6939)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.View.dispatchTouchEvent(View.java:3938)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
01-09 17:25:53.804: E/AndroidRuntime(18966): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1755)
01-09 17:25:53.804: E/AndroidRuntime(18966): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1173)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.app.Dialog.dispatchTouchEvent(Dialog.java:642)
01-09 17:25:53.804: E/AndroidRuntime(18966): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1739)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2215)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.view.ViewRoot.handleMessage(ViewRoot.java:1886)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.os.Looper.loop(Looper.java:123)
01-09 17:25:53.804: E/AndroidRuntime(18966): at android.app.ActivityThread.main(ActivityThread.java:3687)
01-09 17:25:53.804: E/AndroidRuntime(18966): at java.lang.reflect.Method.invokeNative(Native Method)
01-09 17:25:53.804: E/AndroidRuntime(18966): at java.lang.reflect.Method.invoke(Method.java:507)
01-09 17:25:53.804: E/AndroidRuntime(18966): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
01-09 17:25:53.804: E/AndroidRuntime(18966): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-09 17:25:53.804: E/AndroidRuntime(18966): at dalvik.system.NativeStart.main(Native Method)
 
브루스웨인 (8,580 포인트) 님이 2014년 1월 9일 질문

2개의 답변

0 추천
 
채택된 답변
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

 

startAcitivity 하는 곳에 addFrag로 FLAG_ACTIVITY_NEW_TASK를 추가하세요.

쎄미 (162,410 포인트) 님이 2014년 1월 9일 답변
브루스웨인님이 2014년 7월 19일 채택됨
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(it);

이런식으로 해줬는데 죽네요..

현재 저 옵션은 dialog.xml 에 있지만
dialog에 대한 액티비티는 생성하지 않고 기존 액티비티에서 끌어다 쓰고 있거든요

그래서 해당 액티비티에 addfrag해줬습니다.
꼭 dialog에 대하 ㄴ액티비티르르 생성해줘야 하는건가요?

MainActivity에서 onclick 함수에 팝업창 띄우는 코드를 넣고
팝업창으로 뜰 xml이 dialog.xml 입니다.

그래서 저 addfrag는 MainActivity에서 인텐트 넘기는 곳
Intent it = new Intent(this, SubActivity.class);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(it);

이렇게 해줬는데 아게 아닌가요?

요약하면 팝업창에 뜰 xml파일에 대한 액티비티파일은 생성하지 않고 쓰고 있습니다.
0 추천
웹 링크 걸때 인텐트에 ACTION_VIEW?? 였나?? 하여튼 액션을 담아서 인텐트를 날리실텐데...

링크 클릭시에 거기에 addFrag 로 NEW_TASK 를 추가해주어야 합니다.
wifi (1,340 포인트) 님이 2014년 1월 10일 답변
...