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();
}