[英]Setting and reading an EditText in Kotlin
我有一個簡單的問題(我希望)。
我有兩個預設值(IP 和端口),我需要應用程序用戶對其進行更改。 我在一個班級中有兩個值。
public class SoftOptions {
var RemoteHost: String = "192.168.43.237"
var RemotePort: Int = 1234
}
然后當然是 val mySettings = SoftOptions()。
然后我將它們作為文本字段顯示在我的 MainActivity 中。 然后,按下“設置”按鈕后,我會轉到一個名為“設置”的活動。 在其中,我將值放置在編輯框中,這樣如果只有最后一位數字發生變化,就不必更改整個 IP 地址。 我也管理過這個。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var editEnterip = mySettings.RemoteHost
var editEnterport= mySettings.RemotePort
setContentView(R.layout.activity_settings)
this.editEnterip.setText(mySettings.RemoteHost.toString())
this.editEnterport.setText(mySettings.RemotePort.toString())
但是,在按鈕偵聽器中,我只需要讀取新值並將其分配給 mySettings.RemoteHost 和 mySettings.RemotePort 變量。
btnSetip.setOnClickListener {
var finalIP =findViewById<EditText>(R.id.editEnterip)
Toast.makeText(this, finalIP.toString(), Toast.LENGTH_SHORT).show()
myTargetIP = finalIP.toString()
mySettings.RemoteHost = finalIP.toString()
editEnterport = editEnterport . toString () .toInt()
myTargetPort = "$editEnterport"
mySettings.RemotePort = myTargetPort.toString().toInt()
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("myTargetIP", myTargetPort)
intent.putExtra("myTargetPort", myTargetPort)
startActivity(intent)
}
但這雖然不會使應用程序崩潰,但會將可怕的錯誤消息作為遠程主機的值,即使編輯的 IP 值很好。
所以,我的問題僅僅是,沒有從編輯框中獲取干凈的文本值,我做錯了什么?
這是我的用戶界面中的消息。 非常感謝,這個論壇是我使用過的最強大的論壇。
為了從edittext獲取文本,您必須使用edittext類的getText()方法,您可以參考此了解更多詳細信息https://developer.android.com/reference/android/widget/EditText#getText()
getText() 將返回您的 Editable,您必須在其上應用 toString() 方法,該方法將為您提供字符串中的 edittext 文本。
考慮到您的代碼有問題,您可以通過以下方式獲得它
var finalIP =findViewById<EditText>(R.id.editEnterip)
var textFromEditText = finalIP.text.toString() // access text this way
println(textFromEditText)
當您使用 kotlin 時,由於它的屬性訪問語法,因此無需編寫完整的 getText(),您可以參考此處了解更多詳細信息https://kotlinlang.org/docs/reference/properties.html
改變:
myTargetPort.toString().toInt()
到:
myTargetPort.text.toString().toInt()
對您擁有的所有 EditText 字段執行相同操作。
edittext.toString()
返回默認的 Object#toString() 實現,該實現將其地址打印為結果,而.text.toString()
獲取您想要的 edittext 中的文本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.