Возврат к определенной активности в 2 разных условиях при нажатии кнопки «Назад» Kotlin - PullRequest
0 голосов
/ 26 апреля 2018

Упражнение A, B, C, D. Первый путь - это A-> C-> D. Когда кнопка возврата нажата от D, она пойдет как D-> C-> A. Но мое требование - D-> A. в том же приложении у меня есть другое условие. Второй путь - A-> B-> C-> D. Когда кнопка возврата нажата от D, это будет происходить как D-> C-> B-> A. Но мое требование - D -> A. Как легко разместить оба требования в моем приложении? но обратите внимание, что когда вы возвращаетесь из C, то он должен перейти к B.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Есть два варианта

1) By On BackPress Kotlin:

override fun onBackPressed() {
  val intent = Intent(this, A::class.java)
  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
  startActivity(intent)
  finish()
}

2) By Manifest.xml

Как насчет добавления в файл манифеста для связанной деятельности:

android:noHistory="true"

к определению активности B и C? Они не будут добавлены в backstack. Не уверен, что это то, что вы хотите.

0 голосов
/ 26 апреля 2018

Переопределить onBackPressed() в D, как это:

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, A.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    finish();
}

Это удалит все действия между D и A из стека и вернет к существующему экземпляру A.

ПРИМЕЧАНИЕ: это Java, а не Kotlin, но вы должны быть в состоянии понять, как Kotlinize код; -)

...