I am getting a very puzzling bug that I have no idea how to even begin working through.
I have a simple app with one activity, the views are implemented with Fragme
Refer @lopisan answer:
I use his solution for a long time.
BUT I figure out have a better way to do this!
If mChildFragmentManager.mActivity is null, then set mChildFragmentManager to null. When performActivityCreated method.
@Override
void performActivityCreated(Bundle savedInstanceState) {
if (getFragmentManagerActivity(mChildFragmentManager) == null) {
setChildFragmentManager(this, null);
}
super.performActivityCreated(savedInstanceState);
}
public static FragmentActivity getFragmentManagerActivity(FragmentManager fragmentManager) {
FragmentManagerImpl fm = (FragmentManagerImpl) fragmentManager;
return fm.mActivity;
}
private static final Field sChildFragmentManagerField;
static {
/**
* BUG : causing a java.IllegalStateException error, No Activity, only
* when navigating to Fragment for the SECOND time
* http://stackoverflow.com /questions/15207305/getting-the-error-java-lang-illegalstateexception-activity-has-been-destroyed
* http://stackoverflow.com/questions/14929907/causing-a-java-illegalstateexception-error-no-activity-only-when-navigating-to
*/
Field f = null;
try {
f = Fragment.class.getDeclaredField("mChildFragmentManager");
f.setAccessible(true);
} catch (NoSuchFieldException e) {
Log.e(TAG, "Error getting mChildFragmentManager field", e);
}
sChildFragmentManagerField = f;
}
public static void setChildFragmentManager(Fragment fragment, FragmentManager fragmentManager) {
if (sChildFragmentManagerField != null) {
try {
sChildFragmentManagerField.set(fragment, fragmentManager);
} catch (Exception e) {
Log.e(TAG, "Error setting mChildFragmentManager field", e);
}
}
}
may your error is android.view.InflateException?
if so,you should inflate Fragment dynamically ,don't use XML layout.
and, you should not target fragment which is defined XML Layout to Fragment Transaction.