android - 在 kotlin 中显示随机布局
问题描述
我正在尝试创建一个显示不同难度级别的随机挑战的应用程序,以构建一个游戏化的自我开发应用程序。由于我是一个非常缺乏经验的开发人员(这是我第一个不属于任何课程的应用程序),我没有使用片段,但我实际上创建了一个对应于每个挑战的布局。在我的应用程序中,我将按钮表示的不同难度级别显示为 MainActivity。这些级别按钮中的每一个都为该级别的介绍页面创建了一个意图,该级别还包含一个底部的按钮,该按钮应随机选择一个布局(归类为该级别的一部分)并将其显示给用户。我的问题是我不知道进行这种选择的代码,并且以前的答案效果不佳。
我试图根据答案做到这一点:
private val SafeChallenges = listOf(
DeclutterPhone::class,
Drink2glasses::class,
TodoList::class
)
private fun startRandomActivity() {
startActivity(Intent(this, SafeChallenges.random().java))
// If this s in a Fragment, use requireContext() instead of this
}
但它没有成功。我创建了 3 个类,每个类都有一个 setContentView 到一个特定的布局(挑战) 我知道,没有 setOnClickListener 但是当我放一个时,它要么显示错误,要么不做任何事情。
我也尝试过这种类型的循环,但我的按钮没有响应。
override fun onClick(view: View){
Log.d(TAG,"onclick: called")
category12_challenge_button.setOnClickListener {
Log.d(TAG,"button clicked")
val myRandomChallenges = Random.nextInt(1..3)
when(myRandomChallenges){
1->startActivity(Intent(this,DeclutterPhone::class.java))
2->startActivity(Intent(this,Drink2glasses::class.java))
3->startActivity(Intent(this,TodoList::class.java))
else -> IllegalArgumentException("unknown layout")
}
}
你能告诉我我在哪里错过了我的观点吗?
解决方案
这是我算法的随机化循环的最终答案。我的主要问题是,当我创建 onClick 函数时,我没有在 onCreate 中初始化 setOnclicklistener。
我的代码基于 Tenfour04 的答案,即使他/她的答案似乎消失了。
不管怎样,谢谢各位。我保证,下一个问题会更加干净和详细;)
有代码供那些可能需要它的人使用,我创建了 3 个分类以具有 3 个 setContentView 用于 3 个不同的 XML 布局:
override fun onClick(view: View) {
val safeChallenges = listOf(
DeclutterPhone::class,
Drink2glasses::class,
TodoList::class
)
val intent = when(view.id){
R.id.category12_challenge_button ->{
Intent(this, safeChallenges.random().java)
}
else -> throw IllegalArgumentException("unknown layout selected")
}
startActivity(intent)
}
推荐阅读
- reactjs - f5/refreshpage 后如何防止从仪表板返回主页
- android - android-jetifier: "无法解析所有工件"; 新项目上的“改造工件失败”
- python - 有没有办法返回 Soup 字典中所有元素的所有第一个子元素?
- c# - 在 C# 中使用 Finisar.SQLite 在 SQLite Alter Table 上出现语法错误
- python - 在python中处理两个列表的索引
- git - Git 无法锁定 ref 'HEAD'
- reactjs - 如何将我的 React 项目部署到生产环境?
- swift - 如何使用滚动更改导航栏和 BarButtonItem 的颜色
- typescript - 强制索引键为字符串类型(类型没有索引签名)
- python - 为熊猫打印设置列宽