2016-06-30 3 views
-1

У меня есть три вида деятельности (A, B, C),Навигация между деятельностью

кнопка в деятельности A посылает пользователю активность B

и в деятельности B, Существует еще одна кнопка, которая отправляет пользователя в операцию C, также заканчивается(), когда это происходит.

Теперь, всякий раз, когда пользователь нажимает кнопку «Назад» на устройстве, находясь в действии C, он отправляет их в «Активность A.». Я не хочу, чтобы это произошло. Если пользователи нажимают кнопку «Назад» в Activity C, приложение должно просто закончить. или перейдите на вкладку «Последние экраны»? как бы вы это ни называли. Пожалуйста, помогите мне выполнить это.

+0

И нажав кнопку «Назад» в Activity B, вы хотите перейти к активности A или хотите выйти из приложения? – Drv

+0

A является родителем B, поэтому нажатие на B должно начинаться с A. это прекрасно работает. Но активность C не должна иметь родителя. Я не объявлял A в качестве родителя C, но он по-прежнему открывает его при нажатии кнопки «Назад». –

+0

вы можете использовать startActivityForResult в действии A и вызывать действия B и C и избегать этих проблем –

ответ

2

Постарайся переопределении onBackPressed в деятельности C, как это:

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

Для старшего apilevel> = 11 попробуйте это при запуске активность C:

Intent intent = new Intent(MainActivity.this, TestActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
+0

Я попробую это сейчас. Что делает finishAffinity(); делать? –

+0

Завершите это действие, а также все действия сразу под ним в текущей задаче, имеющей одинаковую близость. https://developer.android.com/reference/android/app/Activity.html#finishAffinity() – babadaba

+0

Я думаю, что это то, что я ищу, но для этого требуется min api level 16 :( –

0

Сценарий 1: Вы можете закончить() A при переходе к активности B. Затем переопределите onBackPress() в действии C и завершите метод метода(); Он завершит деятельность C.

Сценарий 2: Если вы хотите закончить активацию А только при возврате из C, но не из B, завершите работу Activty каждый раз и на каждом конце. Нажмите «Старт». Предыдущий действие с намерением, переопределив его в onBackPress ()

например, `

onBackPress() 
{ 
Intent intent = new Intent(this,prevActivity.class); 
startactivty(intent); 
finish(); 
} 

Другой метод, когда вы переопределить onBackPress() insyead Os startActivity() Do startactivityForResult();

и отправить код с этим. В каждом классе ручки на активности за результат, и если этот конкретный код существует покрытие() в activity.`

0

по нажатию кнопки Activity A в:

btn_A.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent i=new Intent(A.this,B.class); 
     startActivity(i); 
     finish(); 
     } 
}); 

В активность B:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent i=new Intent(B.this,A.class); 
     startActivity(i); 
     finish(); 

}  
} 
Смежные вопросы