我想保存我的程序,如果它要关闭或处于暂停模式。
我创建了一个名为save
的功能。但现在我的问题是,在按下对话框中的super.onPause()
按钮之前,我怎么能等待save
方法?
这是我的代码:
@Override
public void onPause()
{
AlertDialog.Builder builder2=new AlertDialog.Builder(rechner.this);
builder2.setMessage("Möchten sie ihre Noten Speichern?");
builder2.setPositiveButton("OK",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
save();
}
});
builder2.setNegativeButton("Nein Danke!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Danke, dass sie mein Programm verwendet haben", Toast.LENGTH_SHORT).show();
onDestroy();
}});
builder2.setTitle("Speichern");
builder2.show();
//wait until somethin clicked
super.onPause();
}
希望你能帮助我,并为糟糕的英语抱歉;)
答案 0 :(得分:1)
我要继续说你不能。至少,你不应该。为了让事情顺利进行,Android需要能够在需要时关闭您的应用程序。如果您接到电话并且在用户想要接听电话时尝试显示弹出窗口怎么办?不会是一个快乐的露营者。
如果确实需要,您可以覆盖后退按钮操作以显示弹出窗口。
此外,暂停可能不应该是最终的。暂时保存状态并返回onResume()
。
答案 1 :(得分:0)
你为什么不把这一行:“super.onPause();”进入点击监听器?像:
@Override
public void onPause()
{
if(pauseAlreadyClicked) {
super.onPause();
} else {
AlertDialog.Builder builder2=new AlertDialog.Builder(rechner.this);
builder2.setMessage("Möchten sie ihre Noten Speichern?");
builder2.setPositiveButton("OK",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
save();
pauseAlreadyClicked = true;
onPause();
}
});
builder2.setNegativeButton("Nein Danke!", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Danke, dass sie mein Programm verwendet haben", Toast.LENGTH_SHORT).show();
onDestroy();
}});
builder2.setTitle("Speichern");
builder2.show();
}
}
所以它会等待用户说是。如果用户取消对话框,那么我猜不会发生任何事情...(当然,你可以为这种情况设置一个OnCancelListener)