android - Kotlin Android 依次显示几个已定义的布局活动
问题描述
我继承了一段代码,并希望将应用程序中已经设计的所有布局活动视为许多 xml 文件。是的,我知道我可以在 AS 中查看它们,但我想在我拥有的智能手机的真实屏幕上查看它们。我可以看到 2 个这样设计的布局活动,但它不允许看到 3 个、4 个或更多......,不知道为什么......在这里尝试了几种可能性,到目前为止没有解决方案。
package com.explore.appviews
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.appcompat.app.AppCompatActivity
import java.util.*
import kotlin.concurrent.schedule
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_first_launch)
Handler(Looper.getMainLooper()).postDelayed({
// setContentView(R.layout.activity_fullscreen_image_viewer)
setContentView(R.layout.activity_login)
}, 3000)
Handler(Looper.getMainLooper()).postDelayed({
setContentView(R.layout.activity_fullscreen_image_viewer)
// setContentView(R.layout.activity_login)
}, 3000)
}
}
解决方案
我不知道这是否是您的问题的原因,但您将在未来 3 秒内排队两次布局更改,即在完全相同的时间。所以第一个将显示,并立即被第二个替换。你可能看到了first_launch
,然后三秒钟后fullscreen_image_viewer
?
您可能应该只列出所有布局资源的列表,然后发布一个显示列表中下一个的延迟任务,如果还有更多,则发布一个新的延迟任务
class MainActivity : AppCompatActivity() {
val layouts = listOf(
R.layout.activity_first_launch,
R.layout.activity_login,
R.layout.activity_fullscreen_image_viewer
)
var nextLayout = 0
val handler = Handler(Looper.getMainLooper())
fun showNext() {
// if we've hit the end, this skips and ends the posting cycle
if (nextLayout < layouts.size) {
setContentView(layouts[nextLayout])
nextLayout++
// run this function again in 3 seconds
handler.postDelayed(::showNext, 3000)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
showNext()
}
}
或者 aStack
会更整洁,不需要跟踪当前位置并检查列表的边界
推荐阅读
- javascript - 单击路由器链接时强制重新渲染 vue 组件
- rss - Google 搜索新闻标签的 RSS 提要
- kubernetes - kubectl logs 命令似乎不尊重 --limit-bytes 选项
- go - 如何在 Go 中将整数转换为字节
- python - 如何通过相同的索引和列名将空数据框与另一个填充的数据框合并/连接?
- laravel - 使用具有不同模型的数据透视表
- c# - 为什么 Microsoft.Office.Interop.Excel 需要完整路径名才能打开文件?
- mysql - 在 mysql 的逗号分隔列表中搜索带有 id 的条目
- azure-devops - 我正在尝试使用 API 导出流程模板,但出现错误:“此功能已禁用”如何启用此功能?
- r - 提取特定值(n 位长并以数字开头)