我有两个活动简单的应用程序。这是明显的:莫名其妙的行为背后的行为
<application>
<activity
android:name=".ActivityA"
android:theme="@style/AppTheme.NoActionBar.Map">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".ActivityB"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="https://stackoverflow.com/"
android:scheme="http"
android:pathPrefix="https://stackoverflow.com/questions/ask"
/>
</intent-filter>
</activity>
</>
就像你看到的,当被点击链接“https://stackoverflow.com/questions/ask” - 我的应用程序将打开第二个活动。 在ActivityB我重写onBackPressed方法:
override fun onBackPressed() {
if(isTaskRoot){
startActivity(Intent(this, MapActivity::class.java))
finish()
} else {
super.onBackPressed()
}
}
所以当次活动从开始的链接,我回来点击BTN,ActivityA被打开,ActivityB完成。
第一次看起来一切看起来不错,但如果在此之后我按回家btn,然后从堆栈重新启动应用程序 - ActivityB再次打开,而不是ActivityA。
请解释为什么会发生这种情况,以及如何解决此问题。谢谢!
UPDATE onBackPressed在ActivityB后,ActivityA被打开,然后我点击onBackBtn代替HomeBtn,所以应用程序被关闭。在这种情况下,从堆栈重新启动后ActivityB打开。
我按homeBtn在ActivityA我离开ActivityB后onBackPressed –
小更新,请大家看看 –
我明白了,尝试调用完成方法'else'以及其他'{完成()}' –