当按下“后退”按钮时提示用户

问题描述:

这是询问用户的好地方,当他(s)他点击后退按钮时他是否想要退出应用程序?我考虑过和onStop,但是这些方法在应用程序退出其他应用程序后触发。当按下“后退”按钮时提示用户

更新: 应用程序还应该询问用户是否试图从按钮(在应用程序本身)退出应用程序,而不是后退硬键。

+1

你的下一个问题将是如何完全退出应用程序 – ingsaurabh 2011-06-09 09:25:13

+0

@Saurabh Agnihotri:没有好友。我已经知道了。而且我也知道退出应用并不是一个好主意。我想要做的是提示用户,而不是自己退出应用程序。 – Chromium 2011-06-09 10:02:05

+0

这将是伟大的+1,我不知道为什么大多数用户想关闭? – ingsaurabh 2011-06-09 10:04:04

询问用户的权限,关闭 应用。

您可以通过以下方式进行操作;

/** 
* Exit the app if user select yes. 
*/ 
private void doExit() { 

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
      AppDemoActivity.this); 

    alertDialog.setPositiveButton("Yes", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
     } 
    }); 

    alertDialog.setNegativeButton("No", null); 

    alertDialog.setMessage("Do you want to exit?"); 
    alertDialog.setTitle("AppTitle"); 
    alertDialog.show(); 
} 

哪一个是好地方,询问用户,是否 他(她)想要的时候他(她)点击后退按钮退出应用程序 ?

因为,要提示用户,当他(她)点击后退硬键,通过别人的建议,你可以重写onBackPressed()方法,并从那里调用上面的方法;

@Override 
public void onBackPressed() { 

    doExit(); 
} 

正如@Martyn建议,您可以使用onKeyDown达到相同的;

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if(keyCode == KeyEvent.KEYCODE_BACK) { 
     doExit(); 
    } 

    return super.onKeyDown(keyCode, event); 
} 

该应用程序还应该询问用户是否是 试图从一个按钮 (在应用程序本身),而不是返回硬 键退出程序。

为此,请从您的按钮的onClick调用doExit();

Button exitButton = (Button)findViewById(R.id.exitButton); 
exitButton.setOnClickListener(new android.view.View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     doExit(); 
    } 
}); 
+0

也许不是'finish()',而是可以调用'AppDemoActivity.super.onBackPressed()' – lopek 2013-05-07 13:04:04

最好的地方是在onBackPressed。唯一需要记住的是应用程序的行为“正常” - 即当用户按下时应该返回到前一个屏幕 - 如果他们按下主屏幕,那么很好问他们是否意味着退出应用程序。

+0

如果用户在提示中选择了否,该怎么办?我怎样才能取消应用程序退出? – Chromium 2011-06-09 10:04:59

+0

您可以覆盖的onkeydown代替,那么你有更多的控制@覆盖 公共布尔的onkeydown(INT的keyCode,KeyEvent的事件){ 如果(的keyCode == KeyEvent.KEYCODE_BACK){ 返回FALSE; } return super.onKeyDown(keyCode,event); } – Martyn 2011-06-09 11:06:30

看看这个链接..

你不应该退出你的应用程序。

Is quitting an application frowned upon?

+0

我不想退出该应用程序,我只想征求用户的同意。 – Chromium 2011-06-09 10:02:37

如果只有当用户按压背部(不在家或其他),使用onBackPressed

的医生说:当活动检测 用户的返回键的按下

调用。 默认实现只需完成 当前活动,但您可以通过 覆盖此操作来执行任何您想要的操作。

所以,如果你赶上后压,不要做任何事情,活动不会退出。 如果你想退出,使用finish()

+0

如果用户在提示中选择了否,该怎么办?我怎样才能取消应用程序退出? – Chromium 2011-06-09 10:05:18

+0

我更新了我的答案 – Jonas 2011-06-09 10:23:56