gpt4 book ai didi

java - 返回按钮会导致意外行为

转载 作者:行者123 更新时间:2023-12-02 00:28:46 25 4
gpt4 key购买 nike

我有两项 Activity 。 Activity A 包含其中包含图像的卡片 View 元素的回收器 View 。在 Activity A 中选择一个元素时。图像的完整横向版本显示在 Activity B 中。

Activity B 的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">


<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

Activity B 的代码库如下:

class PosterViewActivity : AppCompatActivity()
{

private lateinit var imageView: AppCompatImageView

override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_poster_view)
init()
}

private fun init()
{
findViewsByID()
getBundle()
toggleHide()
}

private fun getBundle()
{
if (intent != null)
{
var imageUrl = intent.getStringExtra(ARG_IMAGE_URL)
if (imageUrl != null)
{
Glide.with(this).load(imageUrl).centerInside().into(imageView)
}
}
}

private fun findViewsByID()
{
imageView = findViewById(R.id.imageView)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean
{
if (item.itemId == android.R.id.home)
{
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
}
return super.onOptionsItemSelected(item)
}

override fun onBackPressed()
{
super.onBackPressed()
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
}

override fun onWindowFocusChanged(hasFocus: Boolean)
{
super.onWindowFocusChanged(hasFocus)

}

private fun toggleHide()
{
val uiOptions = window.decorView.systemUiVisibility
var newUiOptions = uiOptions
val isImmersiveModeEnabled = uiOptions or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY == uiOptions
if (isImmersiveModeEnabled)
{
Log.i("PosterViewActivity", "Turning immersive mode mode off. ")
}
else
{
Log.i("PosterViewActivity", "Turning immersive mode mode on.")
}

if (Build.VERSION.SDK_INT >= 14)
{
newUiOptions = newUiOptions xor View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
}

// Status bar hiding: Backwards compatible to Jellybean
if (Build.VERSION.SDK_INT >= 16)
{
newUiOptions = newUiOptions xor View.SYSTEM_UI_FLAG_FULLSCREEN
}

if (Build.VERSION.SDK_INT >= 18)
{
newUiOptions = newUiOptions xor View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
}

window.decorView.systemUiVisibility = newUiOptions
}
}

但是,当我按设备上的后退按钮而不是返回到 Activity A 时。状态和导航按钮会显示和隐藏,并且需要按 4 次后退按钮才能返回到 Activity A。我检查了返回堆栈,堆栈中有两个 Activity ,即 A 和 B

最佳答案

您应该只需要在 PosterViewActivity 中执行类似的操作即可:

    //link instance of menu_main
val mainToolbar = findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbar)
setSupportActionBar(mainToolbar)

//Enable Up Button to return you to home page
val actionBar = supportActionBar
actionBar?.title = null
actionBar?.setDisplayHomeAsUpEnabled(true)

关于java - 返回按钮会导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com