下面列出了android.support.v4.app.FragmentManager#isDestroyed ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void displayDialog(BaseActivity activity, String tag) {
if (activity == null || !activity.isActive()) {
return;
}
FragmentManager fragmentManager = activity.getSupportFragmentManager();
if (fragmentManager == null || fragmentManager.isDestroyed()) {
return;
}
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment oldDialog = fragmentManager.findFragmentByTag(tag);
if (oldDialog != null) {
transaction.remove(oldDialog);
}
transaction.addToBackStack(null);
//fix for IllegalStateException: Can not perform this action after onSaveInstanceState
//http://stackoverflow.com/questions/15729138/on-showing-dialog-i-get-can-not-perform-this-action-after-onsaveinstancestate
if (!activity.isActive()) { //final safeguard in case activity was closed in the middle
return;
}
FragmentTransaction ft = fragmentManager.beginTransaction();
this.show(ft, tag);
}
public void displayDialog(BaseActivity activity) {
if (activity == null || !activity.isActive()) {
return;
}
FragmentManager fragmentManager = activity.getSupportFragmentManager();
if (fragmentManager == null || fragmentManager.isDestroyed()) {
return;
}
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment oldDialog = fragmentManager.findFragmentByTag(BasePopupDialog.FRAGMENT_TAG);
if (oldDialog != null) {
transaction.remove(oldDialog);
}
transaction.addToBackStack(null);
//fix for IllegalStateException: Can not perform this action after onSaveInstanceState
//http://stackoverflow.com/questions/15729138/on-showing-dialog-i-get-can-not-perform-this-action-after-onsaveinstancestate
if (!activity.isActive()) { //final safeguard in case activity was closed in the middle
return;
}
FragmentTransaction ft = fragmentManager.beginTransaction();
this.show(ft, BasePopupDialog.FRAGMENT_TAG);
}
private static ConnectorFragment get(FragmentManager fm) {
if (fm.isDestroyed()) {
throw new IllegalStateException("Can't get fragment after onDestroy");
}
Fragment fragment = fm.findFragmentByTag(FRAGMENT_TAG);
if (fragment != null && !(fragment instanceof ConnectorFragment)) {
throw new IllegalStateException("Unexpected fragment instance was returned by tag");
}
return (ConnectorFragment) fragment;
}
public void show(final FragmentManager manager, final String tag) {
if (!mDismissed || manager.isDestroyed()) {
return;
}
mDismissed = false;
new Handler().post(new Runnable() {
public void run() {
FragmentTransaction ft = manager.beginTransaction();
ft.add(ActionSheet.this, tag);
ft.addToBackStack(null);
ft.commitAllowingStateLoss();
}
});
}