【问题标题】:Display a random layout in kotlin在 kotlin 中显示随机布局
【发布时间】:2020-10-26 16:06:53
【问题描述】:

我正在尝试创建一个显示不同难度级别的随机挑战的应用程序,以构建一个游戏化的自我开发应用程序。由于我是一个非常缺乏经验的开发人员(这是我的第一个不属于任何课程的应用程序),我没有使用片段,但我实际上创建了一个对应于每个挑战的布局。在我的应用程序中,我将按钮表示的不同难度级别显示为 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")
        }
    }

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

【问题讨论】:

  • 您想从给定的活动列表中开始随机活动吗?我的意思是,如果一个应用有 3 个活动 FirstActivity.ktSecondActivity.ktThirdActivity.kt,你想随机启动这些活动中的任何一个,对吧?
  • 其实是一款挑战类应用。我有一个带按钮的介绍性菜单,然后会随机选择显示挑战的活动。
  • 你可以使用列表和随机。
  • 好的,那我怎样才能把它翻译成 kotlin 代码呢?
  • 我们需要查看您的点击侦听器以了解它为什么会给您带来错误。错误是什么?

标签: android kotlin android-intent random


【解决方案1】:

对于安卓导航试试这个:

        val possibleDestinations = listOf(
            R.id.action_mainFragment_to_firstFragment,
            R.id.action_mainFragment_to_secondFragment,
            R.id.action_mainFragment_to_thirdFragment)

        viewBinding.apply {
            randPick.setOnClickListener {
                Navigation.findNavController(view).navigate(possibleDestinations.random())
            }
        }

要查看它的实际效果,请访问working example on GitHub

【讨论】:

    【解决方案2】:

    这是我算法的随机化循环的最终答案。我的主要问题是我在创建 onClick 函数时没有在 onCreate 中初始化 setOnclicklistener。

    我的代码基于 Tenfour04 的答案,即使他/她的答案似乎消失了。

    无论如何,谢谢你们。我保证,下一个问题会更加清晰和详细;)

    有代码供那些可能需要的人使用,我创建了 3 个分类来为 3 个不同的 XML 布局设置 3 个 setContentView:

    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)
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 1970-01-01
      • 2021-12-20
      • 2011-03-08
      • 2021-07-30
      • 2014-02-06
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多