2016-05-17 102 views
0

我想在android设备的后退按钮上显示提示消息,询问用户是否确定他的天气。如果用户按“是”,那么他应该导航到前一个。在“否”的情况下,应恢复活动。但是,当我按下按钮它执行这两个操作时会发生问题。它也导航到以前的活动,并显示警报对话框..这是我的代码..看看并指导我..在此先感谢。显示按下后退按钮上的提醒对话框

public void onBackPressed() { 

    super.onBackPressed(); 

    AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 

    alertdialog.setTitle("Warning"); 
    alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
    alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      Intent intent=new Intent(secAddition.this,addition.class); 
      startActivity(intent); 

      secAddition.this.finish(); 

     } 
    }); 

    alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 
     } 
    }); 


    AlertDialog alert=alertdialog.create(); 
    alertdialog.show(); 



}} 
+0

不要调用startActivity上BackPress。你应该调用超级OnBackPress。当按下硬件后退时。检查我的答案。 –

回答

3

我实现了一个slimier类型的事情,请检查下面的代码片段

@Override 
    public void onBackPressed() { 
      //super.onBackPressed(); 
      IsFinish("Want to close app?"); 
     } 


    } 

    public void IsFinish(String alertmessage) { 
      DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        switch (which) { 
         case DialogInterface.BUTTON_POSITIVE: 
          android.os.Process.killProcess(android.os.Process.myPid()); 
          // This above line close correctly 
          //finish(); 
          break; 

         case DialogInterface.BUTTON_NEGATIVE: 

          break; 
        } 
       } 
      }; 

      AlertDialog.Builder builder = new AlertDialog.Builder(context); 
      builder.setMessage(alertmessage) 
        .setPositiveButton("Yes", dialogClickListener) 
        .setNegativeButton("No", dialogClickListener).show(); 

     } 
1

删除

super.onBackPressed(); 

这应该工作..

一样,

public void onBackPressed() { 

AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 

alertdialog.setTitle("Warning"); 
alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     Intent intent=new Intent(secAddition.this,addition.class); 
     startActivity(intent); 

     secAddition.this.finish(); 

    } 
}); 

alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 


AlertDialog alert=alertdialog.create(); 
alertdialog.show(); 



}} 
+0

它的工作..谢谢 –

+0

友好标记为答案。它的工作原理是 –

5

如果你想显示的警告对话框中不关闭应用程序或清除栈,您不应该致电 super.onBackPressed();

+0

。谢谢 –

1

,你可以这样写你的代码工作:

public void onBackPressed() { 
AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 

alertdialog.setTitle("Warning"); 
alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     super.onBackPressed();  
    } 
}); 

alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 


AlertDialog alert=alertdialog.create(); 
alertdialog.show(); 

} 
} 

无需启动Activity如果再你要以前Activity

在你的代码,当你做一回机, super.onBackPressed()被调用如此这般以前Activity

2

这是你在找什么。你不需要在按回来时启动活动。 如果用户选择是不是叫超级onBackPress

public void onBackPressed() { 
AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 
alertdialog.setTitle("Warning"); 
alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 

    super.onBackPressed(); 

} 
}); 

alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 
    dialog.cancel(); 
} 
}); 


AlertDialog alert=alertdialog.create(); 
alertdialog.show(); 
}}