Я перезаписываю эту функцию:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
Но есть ли способ сказать, какой намерен или на экране появится кнопка "Назад"?
Возможно, вам лучше добавить информацию в намерение, которое запустило вашу текущую деятельность.
Активность А
Intent lIntent = new Intent();
lIntent.putExtra( EXTRAS_ACTIVITY_KEY, ACTIVITY_IDENTIFIER );
startActivitiy...
Активность B
public boolean onKeyUp(int keyCode, KeyEvent event){
Intent lIntent = getIntent();
if(lIntent.hasExtra(EXTRAS_ACTIVITY_KEY) &&
ACTIVITY_IDENTIFIER.equals(lIntent.getStringExtra(EXTRAS_ACTIVITY_KEY)){
// Great we know that it was a Activity A...
... your code here....
}
List<CharSequence> theActivityTrace = getActivityTrace(null);
это функция, возвращающая список трассировок действий, которые находятся в стеке, и вы можете вызвать метод ниже, как указано выше amd mAct, - это ваш текущий контекст.
public LinkedList<CharSequence> getActivityTrace(LinkedList<CharSequence> aTrace) {
if (aTrace==null)
aTrace = new LinkedList<CharSequence>();
aTrace.add(mAct.getLocalClassName()+" ("+mAct.getTitle()+")");
if (mAct.getCallingActivity()!=null)
aTrace.add(mAct.getCallingActivity().toString()+" ("+mAct.getIntent().toString()+")");
else if (mAct.getCallingPackage()!=null)
aTrace.add(mAct.getCallingPackage().toString()+" ("+mAct.getIntent().toString()+")");
return aTrace;
}
Вы можете получить его из стека активности с помощью ActivityManager.
onBackPressed()
вызовonBackPressed()
который в основном вызываетfinish()
. Все, кроме «возвращения», покажется очень неестественным для пользователя Android.