2014-10-03 6 views
1

В моем приложении у меня есть 5 видов деятельности, исключая основное действие. Я использую другие 4 действия повторно в цикле.Не удалось закончить Активность

в моем каждом действии (кроме основного) onPause() метод Я написал Activityname.this.finish();

, когда я окончание цикла на 5-й деятельности и вернуться обратно в основной деятельности ...

, но моя проблема в том, когда я об окончании основной деятельности .. вместо закрытия приложения, оно идет в 3-й Мероприятия.

Я не знаю, где проблема. может быть в 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, чтобы закрыть приложение

+0

Не могли бы вы отбросить фрагменты кода? – nilkash

+0

попробуйте дать нам код и проверить кнопку (Выход) в вашем основном действии, содержит ли это определение кнопки какие-либо ссылки на 3-ю активность? или просто просто system.kill или finish() или android.process.os.kill (android.process.os.kill.mypid) [возьмите их как псевдо, ищите правильный формат, мой плохой, я не помню его прямо сейчас] –

+0

@akshaybhanage just call finish(); когда вы начинаете следующую операцию, но не вызываете ее, когда вы переходите от основного к любому действию. – Umair

ответ

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.

1

Использовать метод overStop() вместо использования onPause(), по какой-то причине onPause может не вызываться, а onStop.

@Override 
protected void onStop() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    finish(); 
} 
Смежные вопросы