您的位置:首页 > 移动开发 > Android开发

Fragment FragmentOne{2627db19} not attached to Activity

2016-07-13 23:18 417 查看
这里的异常是有Fragment中使用getString()所导致的,因为getResource()无法获取到

下面看log及解决方法

01-07 00:54:53.513: E/AndroidRuntime(3305): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mypegerdemo/com.android.mypegerdemo.MainActivity}: java.lang.IllegalStateException: Fragment FragmentOne{2627db19} not attached to Activity
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.ActivityThread.access$800(ActivityThread.java:178)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.os.Handler.dispatchMessage(Handler.java:111)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.os.Looper.loop(Looper.java:194)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.ActivityThread.main(ActivityThread.java:5637)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at java.lang.reflect.Method.invoke(Native Method)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at java.lang.reflect.Method.invoke(Method.java:372)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
01-07 00:54:53.513: E/AndroidRuntime(3305): Caused by: java.lang.IllegalStateException: Fragment FragmentOne{2627db19} not attached to Activity
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.support.v4.app.Fragment.getResources(Fragment.java:601)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.support.v4.app.Fragment.getString(Fragment.java:623)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at com.android.mypegerdemo.FragmentOne.<init>(FragmentOne.java:14)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at com.android.mypegerdemo.MainActivity.initView(MainActivity.java:55)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at com.android.mypegerdemo.MainActivity.onCreate(MainActivity.java:31)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.Activity.performCreate(Activity.java:6100)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
01-07 00:54:53.513: E/AndroidRuntime(3305): 	... 10 more

出现问题的位置

@Override
public String getTextTitle() {
title=getResources().getString(R.string.one);
return title;
}

出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等,需要上下文Content的函数。解决方法,就是等将调用的代码写在OnStart()中。还有就是添加isAdded()判断,但这样虽然没有报错,但无法获取需要的值,如下

@Override
public String getTextTitle() {
if(isAdded())
title=getResources().getString(R.string.one);
return title;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异常 android