2014-10-03 84 views
1

在我的應用程序中,我有5個活動,不包括主要活動我正在循環使用其他4個活動。我已經寫了Activityname.this.finish();我的每個活動(主除外)onPause()方法我寫了Activityname.this.finish();無法完成活動

,當我在5日結束的活動週期,返回回主活動......

但我的問題是,當我結束了,而不是關閉應用程序的主要活動..,它進入第三活動。

我不知道問題出在哪裏。可能會在第三個活動中使用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方法來關閉應用

+0

請問您可以放下一些代碼片段嗎? – nilkash 2014-10-03 05:26:03

+0

嘗試給我們一些代碼並檢查主要活動中的按鈕(退出),該按鈕定義是否包含任何第三方活動的意圖鏈接?或者只是簡單的system.kill或finish()或android.process.os.kill(android.process.os.kill.mypid)[把這些當作僞,搜索正確的格式我不好,我現在不記得它] – 2014-10-03 05:31:51

+0

@akshaybhanage只需調用finish();當你開始下一個活動,但不要從主要活動到任何活動時調用它 – Umair 2014-10-03 05:55:00

回答

4

可以使用Flags,而不是在每個活動,每次打電話finish()。當你開始一個新的活動時,只需使用FLAG_ACTIVITY_CLEAR_TASK,然後使用FLAG_ACTIVITY_NEW_TASKIntent,這將清除堆棧緩衝區並作爲新的啓動活動。像..

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

您可以在此conversation找到更多關於標誌的信息。

1

使用onStop()覆蓋方法,而不是使用onPause(),由於某種原因onPause可能不會調用,但onStop會。

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