将选项捆绑包传递到 startActivity,在目标 Activity 中引入意外结果

Pass options bundle to startActivity introduce an unexpected result in destination Activity

提问人:Ali 提问时间:10/7/2022 最后编辑:Ali 更新时间:10/9/2022 访问量:170

问:

这个问题的简单示例可以在这里找到:https://github.com/alirezaeiii/SearchViewOption

我在 MainActivity 中有以下代码:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val button = findViewById<Button>(R.id.button)

        button.setOnClickListener {
            val options = ActivityOptions.makeSceneTransitionAnimation(
                this,
                button,"animation"
            ).toBundle()

            val intent = Intent(this, SearchActivity::class.java)
            startActivity(intent, options)
        }
    }
}

如您所见,我使用选项作为捆绑包启动Activty。在 SearchActivity 中,我有以下代码:

class SearchActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_search)

        val button = findViewById<Button>(R.id.button)
        val search = findViewById<SearchView>(R.id.search)

        search.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
            override fun onQueryTextSubmit(query: String): Boolean {
                return true
            }

            override fun onQueryTextChange(query: String): Boolean {
                if (query.isNotEmpty()) {
                    button.visibility = View.GONE
                } else {
                    button.visibility = View.VISIBLE
                }
                return true
            }
        })
    }
}

如您所见,当有查询时,我隐藏了按钮。首次输入查询时,请关闭屏幕并将其打开(SearchActivity 已恢复),按钮将再次出现。如果再次搜索并关闭屏幕并打开它(SearchActivity 恢复),则按钮将按预期消失。

这个问题与我在 startActivity 中传递的选项包有关。如果我没有通过它并且一切都按预期工作。startActivity(intent)

为什么期权包会引入这个问题?我该如何避免它?

附录我在这里报告了这个问题:https://issuetracker.google.com/issues/251812970

android android-activity 开始活动

评论


答: 暂无答案