2010-04-27 3 views

ответ

90

Вызов finish() от деятельности, которую вы хотите завершить, должен позаботиться об этом.

Редактировать много лет спустя: Это все еще работает, но это немного сложный подход. Когда я изначально разместил это, Fragments не существовало, и (как отметили несколько комментаторов) это не работает совершенно так же, когда задействованы Fragments. Есть лучшие подходы в настоящее время, если вы используете Fragments.

+0

Thats Rigth, так просто, извините .... – david

+7

Нет необходимости извиняться, просто рад помочь! –

+17

Это не имитирует кнопку «Назад». Если вы используете только действия, это нормально, но если вы используете фрагменты в активности, это закроет все фрагменты вместе с активностью. – tasomaniac

34

при использовании фрагментов:

getFragmentManager().popBackStack(); 

или

getSupportFragmentManager().popBackStack(); 

если вы используете android.support.v4.app пакет

1

Это относится к ситуации, когда один и тот же фрагмент иногда может быть единственным фрагментом в активности, а иногда и частью многократной активности, например, на планшете, где два Одновременно видны фрагменты.

/** 
* Method that can be used by a fragment that has been started by MainFragment to terminate 
* itself. There is some controversy as to whether a fragment should remove itself from the back 
* stack, or if that is a violation of the Android design specs for fragments. See here: 
* http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-i-e-its-equivalent-of-finish 
*/ 
public static void fragmentImplementCancel(Fragment fragment) { 

    FragmentActivity fragmentActivity = fragment.getActivity(); 
    FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager(); 

    if (fragmentManager.getBackStackEntryCount() == 1) { 
     fragmentManager.popBackStack(); 
    } 
    else { 
     fragmentActivity.finish(); 
    } 
} 

Этот код можно вызвать, например, для реализации кнопки «Отмена».

if (theButton.getId() == R.id.btnStatusCancel) { 
     StaticMethods.fragmentImplementCancel(this); 
    } 
50

Только для записи: Описанный метод не делает то же самое, как кнопка назад делает в некоторых случаях, но вы можете позвонить

this.onBackPressed(); 

или

getActivity().onBackPressed(); 

если вы находятся во фрагменте, чтобы добиться того же поведения.

+3

Из того, что я могу сказать, это лучший ответ. Благодарю. –

0

Вы можете подделать вверх кнопку вызова на задней на кнопку печати:

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