首页 > 解决方案 > 在 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")
        }
    }

你能告诉我我在哪里错过了我的观点吗?

标签: androidkotlinandroid-intentrandom

解决方案


这是我算法的随机化循环的最终答案。我的主要问题是,当我创建 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)
}

推荐阅读