Android Can';不要关闭我的自定义对话框

Android Can';不要关闭我的自定义对话框,android,dialog,Android,Dialog,对话框: public class ClearDialog extends Dialog { private MainActivity context; public ClearDialog(MainActivity context) { super(context); this.context = context; setContentView(R.layout.clear_dialog); setTitle(

对话框:

public class ClearDialog extends Dialog {

    private MainActivity context;

    public ClearDialog(MainActivity context) {
        super(context);
        this.context = context;
        setContentView(R.layout.clear_dialog);
        setTitle("something");
        setCanceledOnTouchOutside(false);
        setCancelable(true);
    }
    /* not overriding anymore
    @Override
    public void onBackPressed() {
        return;
    }
    still doesnt work */

    @Override
    protected void onStart() {
        super.onStart();
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = preferences.edit();
        editor.clear();
        editor.commit();
        ResourceHelpers.removeAllResources();
        context.onResourcesDeleted();
    }

}
活动:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.itemLogoff:
            loginDialog.show(); //this is another dialog
            break;
        case R.id.itemSync:
            Intent syncer = new Intent(MainActivity.this, SyncActivity.class);
            MainActivity.this.startActivity(syncer);
            break;
        case R.id.itemClear:
            new AlertDialog.Builder(this)
            .setIcon(R.drawable.ic_action_alert)
            .setTitle("something")
            .setMessage("something")
            .setPositiveButton("something", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    showDeleteDialog();
                }
            })
            .setNegativeButton("something", null)
            .show();
            break;
        }
        return true;
    }

    private void showDeleteDialog() {
        cd = new ClearDialog(this); //this is the dialog
        cd.show();
    }

    public void onResourcesDeleted() {

        cd.dismiss();
        loginDialog.show();
    }
所以。。用户从操作栏(选项菜单)中单击“删除所有数据”。我打开一个对话框询问他是否确定。然后,如果他确定,我打开一个对话框,显示旋转的
ProgressBar

问题是:它不会被忽略


loginDialog(所有数据丢失,因此我希望用户再次登录…)出现在后台。ClearDialog不会忽略…

我认为问题就在这里(不要以这种方式覆盖该方法):

您已经可以使用.setCancelable(false)获取模式对话框


请阅读此文档:

为对话提供以下属性 .setCancelable(真)


它就像代码中的.setTitle()或.setMessage….

在StErMi的答案(您应该遵循)之上,还可以切换onResourcesDeleted()方法中的两行。此时将调用登录对话框,并在调用Disclose之前接管该对话框

public void onResourcesDeleted() {
    cd.dismiss();
    loginDialog.show();
}

因此,不允许后退按钮取消不会让您手动取消它。。。谢谢你的链接tho,看看我是否能在那里找到更好的解决方案。我确实找到了,但后来评论出来了,有人告诉我不要这样做。覆盖中应该包含什么?好吧,您可以在
上下文之后放置一个
this.close
。onResourcesDeleted
调用
onStart()
public void onResourcesDeleted() {
    cd.dismiss();
    loginDialog.show();
}