如何在意图中将字符串转换为Android中的编辑文本框?

时间:2018-07-04 11:01:22

标签: android kotlin

如何将字符串转换为EditText,我在一个活动中创建一个EditText,然后进行第二个活动,然后通过字符串中的意图获得了此Edittext,然后
如何将其分配给第二个活动的edittext,但是我找不到如何将字符串分配给edittext。这里我使用了go函数,该函数在按钮发生onclick事件时使用

This is my first activity

class MainActivity : AppCompatActivity() , View.OnClickListener{ 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    fun go(v:View){
        val intent=Intent(this@MainActivity,Main2Activity::class.java)
        var aa=EditText1.text
        intent.putExtra("name",aa)
        startActivity(intent)
    }
}

This is my second activity

class Main2Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        var str=intent.getStringExtra("name").toString()
        et21.setText(str)
    }
}

3 个答案:

答案 0 :(得分:0)

  

这是因为您试图将charSequence设置为EditText,只是在从String获取价值的同时转换为FirstEditText

您的第二项活动内-

  class Main2Activity : AppCompatActivity() {
                override fun onCreate(savedInstanceState: Bundle?) {
                    super.onCreate(savedInstanceState)
                    setContentView(R.layout.activity_main2)
                    intent.getStringExtra("name")?.let {
                     et21.setText(it)
                    }
                }
            }

第一次活动中

fun go(v:View){
        val intent=Intent(this@MainActivity,Main2Activity::class.java)
        var aa=EditText1.text.toString()
        intent.putExtra("name",aa)
        startActivity(intent)
    }

答案 1 :(得分:0)

在您的第一个活动更改中,转到以下功能,

 fun go(v:View){
        val intent=Intent(this@MainActivity,Main2Activity::class.java)
        var aa=EditText1.text.toString()
        intent.putExtra("name",aa)
        startActivity(intent)
    }

在第二个活动中,如下更改onCreate的最后一行,您需要从可为空的类型中解包该值。可以使用可空类型的let块来完成。另外,我假设et21是对编辑文本的引用,并且已正确初始化。 此解决方案是无效的

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    intent.getStringExtra("name")?.let {
        et21.setText(it)
    }
}

答案 2 :(得分:0)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    val extras:Bundle =intent.extras
    val nn=extras.getString("name")
    eT21.setText("${nn}")
}

Or

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    eT21.setText(intent.getStringExtra("name"))
}