【问题标题】:Having issues writing to EditText in Kotlin在 Kotlin 中写入 EditText 时遇到问题
【发布时间】:2017-09-30 18:27:26
【问题描述】:

所以我认为我遇到了一些范围界定问题。 我正在尝试使用函数 setZipEdit 在我的活动中设置R.id.zipHolder editText。我只是在设置代码以执行此操作时遇到问题。以下是我目前无法使用的。 mZipHold 回来了,而不是 initialized 我虽然它在 override

更新

class SecondActivity : AppCompatActivity() {
lateinit var townInfo:JsonArray<JsonObject>


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity2)


    SET_TOWN.setOnClickListener {v -> setTowns()}
    GET_TOWNS.setOnClickListener {v -> retrieveTowns()}


}
 fun setZipEdit(zipEdit:String){
    Log.d("SZE",zipEdit)
     zipHolder.setText(zipEdit)



     //mZipHold.setText(zipEdit,TextView.BufferType.EDITABLE)

}

java.lang.NullPointerException:尝试调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()' 空对象引用 在 android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:117) 在 android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:149) 在 android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:29) 在 android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:54) 在 android.support.v7.app.AppCompatDelegateImplV23.(AppCompatDelegateImplV23.java:31) 在 android.support.v7.app.AppCompatDelegateImplN.(AppCompatDelegateImplN.java:31) 在 android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:198) 在 android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:183) 在 android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) 在 android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190) 在

com.example.sdfsdf.listview.SecondActivity._$_findCachedViewById(SecondActivity.kt:0) 在 com.example.sdfsdf.listview.SecondActivity.setZipEdit(SecondActivity.kt:44) 在 com.example.sdfsdf.listview.SecondActivity$MyCustomAdapter$onCreateViewHolder$1.onClick(SecondActivity.kt:124) 在 android.view.View.performClick(View.java:6256) 在 android.view.View$PerformClick.run(View.java:24697) 在 android.os.Handler.handleCallback(Handler.java:789) 在 android.os.Handler.dispatchMessage(Handler.java:98) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="25dp">

    <ImageView
        android:id="@+id/returnimage"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="20dp"
        android:contentDescription="logoforZip"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_new_icon_plain" />

    <EditText
        android:id="@+id/zipHolder"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="10dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:inputType="number"
        android:text="ZIP HERE"
        android:textAlignment="center"
        android:textColor="#000000"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/returnimage"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/SET_TOWN"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_marginTop="8dp"
        android:text="SET TOWN"
        app:layout_constraintEnd_toEndOf="@+id/zipHolder"
        app:layout_constraintStart_toStartOf="@+id/zipHolder"
        app:layout_constraintTop_toBottomOf="@+id/zipHolder" />

    <Button
        android:id="@+id/GET_TOWNS"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_marginTop="8dp"
        android:text="LIST NEARBY TOWNS"
        app:layout_constraintEnd_toEndOf="@+id/SET_TOWN"
        app:layout_constraintStart_toStartOf="@+id/SET_TOWN"
        app:layout_constraintTop_toBottomOf="@+id/SET_TOWN" />

    <View
        android:id="@+id/splitbar"
        android:layout_width="fill_parent"
        android:layout_height="6dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:background="#c0c0c0"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/GET_TOWNS" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/zipList"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="#222222"
        android:scrollbars="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/splitbar" />

</android.support.constraint.ConstraintLayout>

【问题讨论】:

  • 你为什么不使用 kotlinextension @BostonMacOSX
  • 我有它们,但在拾取我放入布局中的项目时遇到问题。
  • 你能在这里用导入或 XML 文件更新你的代码
  • 这段代码不足以解决问题
  • 使用 XML 更新

标签: android android-edittext kotlin


【解决方案1】:

好的,但是使用 kotlinextension 是一种更好的方法,我认为您需要做 2 件事可能会解决您的问题

第一

import kotlinx.android.synthetic.main.activity_main2.*

我想你已经做过了

second 而不是通过findViewById 来初始化你的Editext 直接用作

fun setZipEdit(zipEdit:String){
        Log.d("SZE",zipEdit)
        Log.d("mzh",mZipHold.toString())
         zipHolder.setText(zipEdit)

         //mZipHold.setText(zipEdit,TextView.BufferType.EDITABLE)

    }

您只能使用他们的 ID 来访问您的视图。试试这个,让我知道是否有效

【讨论】:

  • 您好 zipHolder.text 需要可编辑!但 zipEdit 是一个字符串。所以 setText(String) 是要走的路。
  • 是的,我已经更新了我的代码,正如你在上面看到的,@BostonMacOSX 这对我有用,希望这对你也有用
  • 你不需要在初始化块中初始化视图。 kotlin syntectic 对绑定视图有延迟初始化。
  • 是的,我知道并且没有在 init 块中初始化任何视图,
猜你喜欢
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2020-09-15
相关资源
最近更新 更多