2013-08-01 2 views
1

У меня есть 2 действия, A (активность корня) и B, которые запускаются с A. Отжатие от B возвращается к A за исключением 1 случая. If I am in B, go to home screen, launch the app again from recent apps, B comes to foreground but pressing back leads to home screen instead of A. Если я вернусь к приложению, запустив его из значка, а не из последних приложений, я покажу вам активность A, которая, скажем, правильная (хотя B должен быть показан, а нажатие назад от B должно привести к A).Не возвращать родительскую активность при нажатии назад

актив- ности A:

<activity android:name=".AudioRecTabsActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleInstance"> 
      <!-- android:configChanges="keyboardHidden|orientation">--> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </activity> 

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

<activity android:name=".settings.SettingsActivityOld" 
      android:label="@string/settings_activity_title"/> 

Запуск акт B от A:

intent = new Intent(this, SettingsActivityOld.class); 
startActivity(intent); 
+1

попробуйте удалить SingleInstance из манифеста и попробовать. – Charan

ответ

3

Это совершенно нормально, если вы используете android:launchMode="singleInstance", так как операция B запускается в новой задаче, а действие A является единственным действием в ее задаче. Проверьте link

+0

Вы правы, меняя singleInstance из активности A с singleTop, решил мою проблему. –

0

Попробуйте позвонить Activity#finish() в деятельности В. Необходимо удалить текущую деятельность из стека действий и вернуть вас к предыдущему.

+1

Он может вернуться к мероприятию A с B, если не из последних приложений. Поэтому переопределение не складывается. – Charan

+0

Я думаю, что Activity # finish() уже сделано super.onbackPressed() –

0

Override метод backpress вашей B активности и начать активность А оттуда

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this, A.class); 
    startActivity(intent); 

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