A.处理异常java.lang.IllegalStateException: Fragment bb{42261900} not attached to Activity
处理方式:由于在线程中调用Fragment以下方法会出现fragment已经没有附加到activity,
所以在调用这些方法时候加isAdded()判断
Fragment源码
--------------------1-----------------------------
public final Resources getResources()
{
if (this.mActivity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to Activity");
}
return this.mActivity.getResources();
}
public final CharSequence getText(int resId)
{
return getResources().getText(resId);
}
public final String getString(int resId)
{
return getResources().getString(resId);
}
public final String getString(int resId, Object[] formatArgs)
{
return getResources().getString(resId, formatArgs);
}
-----------------2--------------------
public LoaderManager getLoaderManager()
{
if (this.mLoaderManager != null) {
return this.mLoaderManager;
}
if (this.mActivity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to Activity");
}
this.mCheckedForLoaderManager = true;
this.mLoaderManager = this.mActivity.getLoaderManager(this.mWho, this.mLoadersStarted, true);
return this.mLoaderManager;
}
-----------------3--------------------
public void startActivity(Intent intent)
{
if (this.mActivity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to Activity");
}
this.mActivity.startActivityFromFragment(this, intent, -1);
}
-----------------4--------------------
public void startActivityForResult(Intent intent, int requestCode)
{
if (this.mActivity == null) {
throw new IllegalStateException("Fragment " + this + " not attached to Activity");
}
this.mActivity.startActivityFromFragment(this, intent, requestCode);
}