如何解决从生成的 EditText Android Kotlin 获取输入
我正在制作一个随机单词生成器,但在从 Kotlin 中生成的 editText 获取输入时遇到了问题。我在 Java 中找到了一些解决方案,我可以看到它们是如何工作的,但我无法将其放入 Kotlin。
我已经设置好了 EditTexts 是由 while 循环生成的,并且 Id 存储在一个数组调用“arraylist”中。然后我想使用数组中的 Id 从每个 editText 获取“文本”并将它们放入“Strings”变量中。我认为在 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)
}
}
}
解决方法
所以我刚刚解决了
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
只花了我三天哈哈哈
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。