按下后退按钮

时间:2012-11-14 21:38:14

标签: android

我有5个不同的屏幕有多个活动。如果按下后退键,我应该如何处理?在第一个屏幕和其他屏幕? finish()和System.exit()不工作..如果按下后退按钮,我该怎么办才能退出我的应用程序? 以下编码不起作用?请建议我退出具有多个屏幕的应用程序

 public boolean onKeyDown(int keyCode, KeyEvent event) 
 {
    if (keyCode == KeyEvent.KEYCODE_BACK) 
     {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                this);

        new AlertDialog.Builder(this) .setMessage("Are you sure you want to exit?")
           .setCancelable(true)
          .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
           { 
             public void onClick(DialogInterface hi, int dd) 
             {

                Intent exitIntent = new Intent(Mapper.this,SplashActivity.class);
                exitIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);
                SplashActivity.mHandler.sendEmptyMessage(0);                   
                startActivity(exitIntent);    


             }
           }
          )
         .setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
         { 
           public void onClick(DialogInterface hi, int dd) 
           {

           }
         }
         );
        AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
      //AlertDialog alert1 = alt_bld.create();
      //alert1.setTitle("EXIT");
      //alert1.show(); 
       return true; 
     }
     return super.onKeyDown(keyCode, event);
 }

  And in Start.Class:
  public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME) 
    {
        mHandler.removeCallbacksAndMessages(null);
        SplashActivity.this.finish();
    }

    return super.onKeyDown(keyCode, event); 
}

5 个答案:

答案 0 :(得分:7)

像这样覆盖onBackPressed() ......

@Override
public void onBackPressed()
{
    finish();  
}

答案 1 :(得分:0)

你肯定在寻找的是onBackPressed:

@Override
public void onBackPressed() {
    //do your intent here
}

我不确定上下文是什么:

SplashActivity.mHandler.sendEmptyMessage(0); 

此行确实如此,但除此之外,您的原始意图应该回到启动画面。我会做什么,如果你真的想在退出时退出你的应用程序,我会在那里放一些数据,比如说

exitIntent.putExtra("toExit", true);

基本上只是你的启动活动可以读入的标志,并决定自己调用finish()。手动关闭应用程序的唯一“好”方法是完成第一个活动(尽管实际上很少迫使用户退出您的应用程序)

编辑: 好的,所以在你的应用程序中你回到(看起来像SplashActivity),你会在onCreate中寻找一个意图,如下所示:

Intent i = getIntent();
Bundle extras = i.getExtras();

Boolean toExit = extras.getString("toExit");
if(toExit){
    finish();
}

答案 2 :(得分:0)

为什么你要按后退按钮退出?这不是类似Android的行为。通过按回用户通常希望返回上一个活动,但不要退出您的应用程序。 Android会在需要时自行处理活动。

答案 3 :(得分:0)

首先,你想说你想要这样吗?

Activity1 --> Activity2 --> Activity3 --> Activity4 --> Activity5

当前活动是Activity5。后退了。退出整个申请?您是否想要退出应用程序,无论您当前正在进行什么活动?像Activity3一样,后退然后退出?如果是,您可以在调用者活动的每次startActivity()调用后调用finish()。或者您可以选择在您调用的每个活动上使用结果变量。例如,您可以通过staryActivityWithResult()调用Activity1来调用它,并在源Activity - Acitivity1中等待onActivityResult()方法中的结果。因此,如果在Activity2上按下后面,则在完成后在Activity2的setResult()方法上传递一些变量。然后,此结果将传递给调用者Activity1,然后您可以根据所传递的结果执行任何操作。

答案 4 :(得分:0)

在任何活动中退出您的应用程序。请按照以下步骤操作:

1-在要退出应用程序的位置进行活动:

" "

2-在您的第一个活动中,在onCreate()方法中将其编写为:

Intent intent = new Intent(thisActivity.this, FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);