Android:等待super.onPause直到按下按钮

时间:2012-11-02 16:19:27

标签: android save wait onpause

我想保存我的程序,如果它要关闭或处于暂停模式。 我创建了一个名为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();    

    }

希望你能帮助我,并为糟糕的英语抱歉;)

2 个答案:

答案 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)