【问题标题】:Getting Input From Generated EditText Android Kotlin从生成的 EditText Android Kotlin 获取输入
【发布时间】:2021-04-12 03:17:45
【问题描述】:

我正在制作一个随机词生成器,但在从 Kotlin 中生成的 editText 获取输入时遇到问题。我在 java 中找到了一些解决方案,我可以看到它们是如何工作的,但是我无法将它放入 Kotlin。

我已经设置了它,所以 EditTexts 由 while 循环生成,而 Id 存储在一个名为“arraylist”的数组中。然后我想使用数组中的Id从每个editText中获取“文本”并将它们放入“字符串”变量中。我认为在java中你会使用“string [i]”所以变量变成string1、string2等。我不能让它工作。我已经尝试打印数组及其空白,所以我认为我没有正确获取 id。

代码存在一些逻辑问题,例如我已经有一个用于格式化的输入和从 0 开始的数组,因此我稍后会进行整理。

谢谢 杰克

class WordList : AppCompatActivity() {
@RequiresApi(Build.VERSION_CODES.M)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_word_list)

    //Get Linear layout as variable
    val linearLayout = findViewById(R.id.InfoLayout) as LinearLayout
    val Test = findViewById(R.id.WordsInput) as EditText
    val RandomiseButton = findViewById<Button>(R.id.RandomiseInputs) as Button
    var Value = "Hello" as String
    var editText = EditText (this)
    var List = arrayListOf<String>()
    var arraylist = ArrayList<Int>()
    val strings = ArrayList<String>()


    //Get Inputs from Previous page
    var Choice = intent.getIntExtra("Amount", 0)
    /*To Do
    Get Inputs From Created Inputs
    Randomise
    Print output
     */
    //Add new input
    if (Choice >= 2) {
        //Create Var for Edit
        var Number = 2

        //While loop to create multiple EditText fields
        while (Number <= Choice) {
            editText = EditText (this)
            editText.hint = "Input " + Number
            editText.setId(Number)
            //Use Appearance To change things you can't set using style.xml
            editText.setTextAppearance(R.style.TextHintFont)
            editText.setTextColor(Color.parseColor("#E321C2"))
            editText.setHintTextColor(Color.parseColor("#E321C2"))
            editText.setEms(10)
            //Set Edit
            linearLayout.addView(editText)
            arraylist.add(editText.id.toInt())
            Number++

        }

    }

    RandomiseButton.setOnClickListener {

        var Random = (0..Choice).random()

        var i = 0
        while (i <= arraylist.size) {
            strings.add(arraylist.get(i).text.toString())
            i++
        }


        var OutputW = strings.get(Random).toString()
        

            //Value = editText.text.toString()

        var intent = Intent (this@WordList,WordsOutput::class.java)
        intent.putExtra("RandomOut",OutputW)

        startActivity(intent)


    }

}
}

【问题讨论】:

  • 您的 'arrayList' 只是一个 id 列表,不是吗?在这种情况下,您仍然需要findViewById() 来获取对 TextView 的引用,然后在其上调用“文本”。我不确定为什么这条线不会抛出错误 'arraylist.get(i).text.toString()' ??
  • 谢谢伙计,数组列表是空白的,没有正确存储 ID。我实际上只是使用了一个 getChildAt() 来让它工作。感谢您的帮助虽然

标签: java android kotlin random generator


【解决方案1】:

所以我刚刚解决了

RandomiseButton.setOnClickListener {

        var Random = (0..Choice).random()

        var OutputW = linearLayout.getChildAt(Random) as EditText
        var another = OutputW.text.toString()
        

        var intent = Intent (this@WordList,WordsOutput::class.java)
        intent.putExtra("RandomOut",another)

        startActivity(intent)

}
    

我使用 getChildAt 只是随机选择一个字段。 更多信息在这里 https://www.i-programmer.info/programming/android/11415-android-programming-in-kotlin-layouts-and-autonaming-components.html?start=1

只花了我3天哈哈哈

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多