1

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

    }

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

4

2 回答 2

1

我要继续说你不能。至少,你不应该。为了让事情顺利运行,Android 需要能够在需要时关闭您的应用程序。如果你接到一个电话,当用户想要接听电话时你尝试显示一个弹出窗口怎么办?不会是一个快乐的露营者。

如果您真的需要它, 您可能可以覆盖后退按钮操作以显示您的弹出窗口。

此外,暂停可能不应该是最终的。暂时保存状态并返回它onResume()

于 2012-11-02T16:24:04.387 回答
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 )

于 2012-11-02T16:50:08.193 回答