首先,我想说我是编程和Kotlin的新手,我现在只试用了3天,并且完全没有经验,只是阅读了一下。
我有一个带条形码扫描仪的android设备。我进行了一个活动,其中包含2个edittext字段和一个按钮。在第一个edittextfield(etbc)中,我使用设备扫描条形码,因此其中有一个13位数字。在该字段旁边,还有另一个字段etqty,用于输入数量。
在第一个字段中输入13位数字时,我试图让程序自动将焦点设置为etqty。
我已经尽力了,但是我并没有得到任何结果。我该怎么做,还是必须使用另一种方法?
这是我现在拥有的代码(请记住,我对此绝对是新手,所以我的代码可能有点怪异和混乱,但是现在它可以实现我想要的功能了:-))< / p>
package com.example.project016
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import java.io.BufferedReader
import java.io.IOException
import java.io .InputStreamReader
import android.widget.Toast
import android.app.Activity
import java.io.OutputStreamWriter
import java.nio.file.StandardOpenOption
class MainActivity: AppCompatActivity () {
override fun onCreate (savedInstanceState: Bundle?) {
super.onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
val etbc = findViewById (R.id.etbc) as EditText
val et1 = findViewById (R.id.et1) as EditText
val etqty = findViewById (R.id.etqty) as EditText
etbc.requestFocus()
if(fileList().contains("notes.txt")) {
try {
val file = InputStreamReader(openFileInput("notes.txt"))
val br = BufferedReader(file)
var line = br.readLine()
val all = StringBuilder()
while (line != null) {
all.append(line + "\n")
line = br.readLine()
}
br.close()
file.close()
et1.setText(all)
}
catch (e:IOException) {
}
}
val button1 = findViewById (R.id.button1) as Button
button1.setOnClickListener {
try {
val file = OutputStreamWriter(openFileOutput("notes.txt", Activity.MODE_APPEND))
file.write (etbc.text.toString() + ";" + etqty.text.toString() + "\n")
file.flush ()
file.close ()
} catch (e : IOException) {
}
Toast.makeText(this, "data were recorded", Toast.LENGTH_SHORT).show()
// finish ()
etbc.getText().clear()
etqty.getText().clear()
}
}
答案 0 :(得分:2)
您可以做的是观看在第一个字段中输入的文本。
您可以使用TextWatcher
例如
etbc.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun afterTextChanged(s: Editable) {
if(etbc.text.length > 12) {
etqty.requestFocus()
}
}
})
尝试一下。
顺便说一句。您还可以在xml中设置android:maxLength="13"