【发布时间】:2014-05-29 10:50:06
【问题描述】:
我有一个包含 Fragment 的 Activity,我需要显示一个 DialogFragment(在 Fragment 内声明为 public 和 static)用于注销用户。 在此对话框中,我需要发出服务器请求,完成后,必须关闭对话框。
这里的问题是,当服务器请求到达时,我得到错误“IllegalStateException:fragment not attach to Activity”
有没有办法克服这个问题?
编辑:
这是logcat 输出:
E/AndroidRuntime(13849): java.lang.IllegalStateException: Fragment LogoutDialogFragment{4256be70} not attached to Activity
E/AndroidRuntime(13849): at android.support.v4.app.Fragment.startActivity(Fragment.java:836)
E/AndroidRuntime(13849): at nl.emte.merchant.ui.EmteActivity$LogoutDialogFragment$1$1.onDataLoad(EmteActivity.java:328)
E/AndroidRuntime(13849): at nl.emte.merchant.api.EmteApiManager$5.onPostExecute(EmteApiManager.java:212)
这是LogOutFragment 的代码,即允许用户注销的DialogFragment:
public static class LogoutDialogFragment extends SherlockDialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setCancelable(true);
builder.setMessage(R.string.logout_screen_description);
builder.setPositiveButton(R.string.logout_positive_button_lbl,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
EmteApiManager.getInstance().doLogout(new DataLoadListner() {
@Override
public void onError(Object errorMessage) {
}
@Override
public void onDataLoad(Object result) {
Intent intent = new Intent(
IntentActions.ACTION_LOGIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
}
}).setNegativeButton(R.string.logout_negative_button_lbl,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return builder.create();
}
}
提前致谢!
【问题讨论】:
-
需要更多信息来帮助你,如果你能发布一些代码和你的 logcat 会很棒
-
@zozelfelfo 你去 ;)
-
您能突出显示
EmteActivity.java:328吗?