无法完成活动

时间:2014-10-03 05:23:17

标签: android android-activity onpause

在我的应用程序中,我有5个活动,不包括主要活动我以循环方式反复使用其他4个活动。

在我的每个活动中(主要除外)onPause()方法我写了Activityname.this.finish();

当我在第5个活动结束周期并返回主要活动时......

但我的问题是当我结束主要活动时...而不是关闭应用程序,它会转到第3个活动。

我不知道问题到底在哪里。可能在第三个活动中使用db n而不是显式关闭它。这是一个问题吗?

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    PlayerDetails.this.finish();
}

这个onPause()方法我使用

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if (keyCode==KeyEvent.KEYCODE_BACK){
        AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
        alert.setIcon(R.drawable.ic_launcher);
        alert.setTitle(R.string.app_name);
        alert.setMessage("Really Exit?");
        alert.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(final DialogInterface dialog, final int which) {
                    MainActivity.this.finish();
                    dialog.dismiss();
                    }
        });
        alert.setNegativeButton("No", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(final DialogInterface dialog, final int which) {
                    dialog.dismiss();
                    }
        });
        try{
        AlertDialog dialog = alert.create();
        dialog.show();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    return true;
}

这是关闭应用程序的mainActivity方法

2 个答案:

答案 0 :(得分:4)

您可以在每个活动中使用Flags而不是每次都调用finish()。当您启动新活动时,只需使用FLAG_ACTIVITY_CLEAR_TASK后跟FLAG_ACTIVITY_NEW_TASK Intent,这将清除堆栈缓冲区并以新的方式启动活动。类似......

  Intent intent = new Intent(current_context, destination_activity.class);
  intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
  startActivity(intent);

您可以在此conversation找到有关Flags的更多信息。

答案 1 :(得分:1)

使用onStop()覆盖方法而不是使用onPause(),由于某些原因onPause可能不是调用而是onStop会。

@Override
protected void onStop() {
     // TODO Auto-generated method stub
     super.onPause();
     finish();
}