繁体   English   中英

"EditText 输入在存储为字符串或在 Bundle 中传递时不起作用"

[英]EditText Inputs don't work when stored as a string,or passed in a Bundle

我正在制作一个基本表单以将用户输入发送到不同的 Activity 并在那里显示,当我使用 edittext 将输入存储在 String 变量中然后发送时发送一个空白字符串,似乎没有错误或代码中的警告可以有人帮忙,如果我将全名(参见代码)作为可编辑传递,然后使用 toString() 将其转换为字符串,则在使用 toast 测试字符串时,它可以工作,但是如果我事先将其声明为字符串然后通过再次敬酒一个空白输出这是我的 FormActivity

package com.example.formapp

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.textservice.TextInfo
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.android.material.textfield.TextInputEditText
import java.util.regex.Pattern

class FormActivity : AppCompatActivity() {
    private lateinit var named:EditText
    private lateinit var emailadd : EditText
    private lateinit var branch : EditText
    private  lateinit var desc : TextInputEditText

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_form)
         named =findViewById(R.id.name)
        emailadd  =findViewById(R.id.editTextTextEmailAddress)
         branch=findViewById(R.id.branch)
        desc  =findViewById(R.id.bio)
        val fullName = named.text.toString()
        val email= emailadd.text
        val branchName = branch.text
        val biot= desc.text.toString()
        val bundle = Bundle()
        bundle.putString("key1", named.text.toString())
        bundle.putString("email", email.toString())
        bundle.putString("branch",branchName.toString())
        val intent  = Intent(this,DataPoint::class.java)
        intent.putExtras(bundle)



        val bSumit : Button =findViewById(R.id.submit)

        bSumit.setOnClickListener {
            val isAllinfoCorrect = Checkinfo();
            if(isAllinfoCorrect)
            {

                startActivity(intent)
                Toast.makeText(this,fullName,Toast.LENGTH_LONG).show()
            }
            else
            {
                Toast.makeText(applicationContext,"Please Enter the required fields",Toast.LENGTH_LONG).show()
            }
        }

    }

    private fun Checkinfo(): Boolean {
        var text = named.text.toString()
        if(text.isEmpty())
        {
            named.setError("Field Required")
            return false
        }
        else
        {
            named.setError(null)
        }

        text = emailadd.text.toString()
        val chekmail = "[a-zA-Z0-9._-]+@[a-z]+\\.[a-z]+"
        val expression = "^[\\w.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"
        val pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE)
        val matcher = pattern.matcher(text)
        if(!matcher.matches() || text.isEmpty())
        {
            emailadd.setError("Please Enter a Valid Email")
            return false

        }
        else
        {
            emailadd.setError(null)
        }
        text=branch.text.toString()
        if(text.isEmpty())
        {
            branch.setError(" Field Required")
            return false
        }
        else
        {
            branch.setError(null)
        }
        return true

    }
}

这是我使用捆绑包的第二个活动

package com.example.formapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView

class DataPoint : AppCompatActivity() {
    private lateinit var name : TextView
    private lateinit var email : TextView
    private lateinit var Branch : TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_data_point)

      val bundle = intent.extras
        val nmaseString= "TEST STRING"

        name=findViewById(R.id.username)
        email=findViewById(R.id.emailAddress)
        Branch = findViewById(R.id.branchname)
        name.setText(bundle?.getString("key1","THIS IS A DEFAULT VALUE"))
        if (bundle != null) {
            email.setText(bundle.getString("email","Default"))
            Branch.setText(bundle.getString("branch","Default"))
        }


    }
}

这是输出在此处输入图像描述

用于数据点的 xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
    tools:context=".DataPoint">

    <androidx.cardview.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="350dp"

        android:layout_height="300dp"
        android:layout_gravity="center"
        android:elevation="5dp"
        android:outlineAmbientShadowColor="@color/black"
        app:cardCornerRadius="10dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.262"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"


        app:layout_constraintVertical_bias="0.436">

        <TextView
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="0dp"
            android:text="NAME"
            android:textAlignment="center"
            android:textSize="25sp"

            android:translationY="50dp"
            tools:visibility="visible"></TextView>

        <TextView
            android:id="@+id/emailAddress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="0dp"
            android:textAlignment="center"


            android:translationY="100dp" />

        <TextView
            android:id="@+id/branchname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="0dp"
            android:textAlignment="center"

            android:translationY="150dp" />


    </androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>

看来您正在提前创建 Bundle 和 Intent。 onCreate<\/strong>中,EditText 值仍然为空。

相反,在调用startActivity<\/strong>方法之前创建 Intent 并填充 Bundle。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_form)
    named =findViewById(R.id.name)
    emailadd  =findViewById(R.id.editTextTextEmailAddress)
    branch=findViewById(R.id.branch)
    desc  =findViewById(R.id.bio)
    val bSumit : Button =findViewById(R.id.submit)

    bSumit.setOnClickListener {
        val isAllinfoCorrect = Checkinfo();
        if(isAllinfoCorrect)
        {

            val email= emailadd.text
            val branchName = branch.text
            val biot= desc.text.toString()
            val fullName = named.text.toString()

            val bundle = Bundle()
            bundle.putString("key1", named.text.toString())
            bundle.putString("email", email.toString())
            bundle.putString("branch",branchName.toString())

            val intent  = Intent(this,DataPoint::class.java)
            intent.putExtras(bundle)

            startActivity(intent)
            Toast.makeText(this,fullName,Toast.LENGTH_LONG).show()
        }
        else
        {
            Toast.makeText(applicationContext,"Please Enter the required fields",Toast.LENGTH_LONG).show()
        }
    }

}

移动这部分代码...

val bundle = Bundle()
bundle.putString("key1", named.text.toString())
bundle.putString("email", email.toString())
bundle.putString("branch",branchName.toString())
val intent  = Intent(this,DataPoint::class.java)
intent.putExtras(bundle)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM