在Kotlin中写入EditText时遇到问题 [英] Having issues writing to EditText in Kotlin

查看:117
本文介绍了在Kotlin中写入EditText时遇到问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

So I think I'm having some scoping issues. I'm trying to use the function setZipEdit to set the R.id.zipHolder editText in my activity. I'm just having issues in setting up the code to be able to do this. Below is what I have which isn't currently working. mZipHold is coming back as not initialized which I though it was in the 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) 在

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:117) at android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:149) at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:29) at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:54) at android.support.v7.app.AppCompatDelegateImplV23.(AppCompatDelegateImplV23.java:31) at android.support.v7.app.AppCompatDelegateImplN.(AppCompatDelegateImplN.java:31) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:198) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:183) at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190) at

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)

com.example.sdfsdf.listview.SecondActivity._$_findCachedViewById(SecondActivity.kt:0) at com.example.sdfsdf.listview.SecondActivity.setZipEdit(SecondActivity.kt:44) at com.example.sdfsdf.listview.SecondActivity$MyCustomAdapter$onCreateViewHolder$1.onClick(SecondActivity.kt:124) at android.view.View.performClick(View.java:6256) at android.view.View$PerformClick.run(View.java:24697) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at 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是一种更好的方法,我认为您需要做两件事可以解决您的问题

Ok, But using kotlinextension is a better way to do this, I think you need to do 2 things may solve your problem

第一

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

我认为您已经完成了

,而不是通过findViewById直接用作

second instead of initializing your Editext by findViewById direct use as

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

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

    }

您可以仅通过使用其ID来访问您的视图.让我们试试看,让我知道是否可行

you can access your views by only use their id. Let try this and let me know if works

这篇关于在Kotlin中写入EditText时遇到问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆