如何在退出應用程序之前按兩次後退按鈕?我想觸發在退出應用程序之前按兩次後退按鈕
@Override
public void onBackPressed() {
//custom actions
//display toast "press again to quit app"
super.onBackPressed();
}
如何在退出應用程序之前按兩次後退按鈕?我想觸發在退出應用程序之前按兩次後退按鈕
@Override
public void onBackPressed() {
//custom actions
//display toast "press again to quit app"
super.onBackPressed();
}
試試這個:
private boolean doubleBackToExitPressedOnce = false;
@Override
protected void onResume() {
super.onResume();
// .... other stuff in my onResume ....
this.doubleBackToExitPressedOnce = false;
}
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Press twice to exit", Toast.LENGTH_SHORT).show();
}
這個片段也手柄時activityis恢復
你可以做你有一個全球性的整數,只是問什麼復位狀態算上它,如果> 2,退出。
但是你可能需要一個更好的(IMO)的方式,在那裏你問題的用戶,如果他們想退出或不:
private void questionQuit(){
final CharSequence[] items = {"Yes, quit now", "No, cancel and go back"};
builder = new AlertDialog.Builder(mContext);
builder.setCancelable(false);
builder.setTitle("Are you sure you want to quit?");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0:
quit();
break;
case 1:
default:
break;
}
}
}).show();
AlertDialog alert = builder.create();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK :
int i = 0 ;
if(i == 1)
{
finish();
}
i++;
return true;
}
}
return super.onKeyDown(keyCode, event);
}
我看這個問題是有點老,但我雖然這可能有助於一些人尋找替代已經給出的答案。
這是我如何處理退出我的應用程序。如果有人有更好的或谷歌建議的方法來完成這一點,我想知道。
編輯 - 忘記提及這是Android 2.0及更高版本。對於以前的版本,請覆蓋onKeyDown(int keyCode, KeyEvent event)
並檢查keyCode == KeyEvent.KEYCODE_BACK
。 Here是檢出的好鏈接。
private boolean mIsBackEligible = false;
@Override
public void onBackPressed() {
if (mIsBackEligible) {
super.onBackPressed();
} else {
mIsBackEligible = true;
new Runnable() {
// Spin up new runnable to reset the mIsBackEnabled var after 3 seconds
@Override
public void run() {
CountDownTimer cdt = new CountDownTimer(3000, 3000) {
@Override
public void onTick(long millisUntilFinished) {
// I don't want to do anything onTick
}
@Override
public void onFinish() {
mIsBackEligible = false;
}
}.start();
}
}.run(); // End Runnable()
Toast.makeText(this.getApplicationContext(),
"Press back once more to exit", Toast.LENGTH_SHORT).show();
}
}