Android-将数据传递到另一个活动

时间:2018-12-08 15:44:06

标签: android android-intent kotlin

我尝试从MainActivity获取一些数据,并在第二个活动中显示它,我使用putExtra,但我仍然是初学者,对意图和数据了解不多 在MainActivity中,我应该输入我的出生年份和月份,然后单击按钮,向我显示结果,

class MainActivity : AppCompatActivity() {

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


    }


 override fun onStart() {
        super.onStart()


        getAGE.setOnClickListener {

            @SuppressLint("SetTextI18n")


            val Get_year_input = age_year_input.text.toString().toInt()
            val getCurrentYear = Calendar.getInstance().get(Calendar.YEAR)
            val finish_year_input = Get_year_input - getCurrentYear
            val Get_month_input = age_month_input.text.toString().toInt()
            val getCurrentMonth = Calendar.getInstance().get(Calendar.MONTH)
            val finish_month_input = age_month_input.text.toString().toInt() - getCurrentMonth

            // Send Data


            var i_month = Intent()
            i_month.putExtra("Month", finish_month_input)
            setResult(Activity.RESULT_OK)
            finish()

            var getintent = Intent("ahsb3omrk.show.result")


        }
    }

}

第二活动:

class Second : AppCompatActivity() {

    @SuppressLint("SetTextI18n")

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


    }


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {


    if (requestCode == 4 && resultCode == Activity.RESULT_OK){

        var showintent = Intent(data!!.extras.getString("Month"))
        viewMonth.text = showintent.toString()
        viewDay.text = "Hello"
    }
}


}

2 个答案:

答案 0 :(得分:1)

setResult()onActivityResult()与这种情况无关。
您将数据传递给意图:

val i_month = Intent(applicationContext, Second::class.java)
i_month.putExtra("Month", finish_month_input)
startActivity(i_month)

以及在Second活动的onCreate()中:

val finishMonthInput = intent.getIntExtra("Month", -1)

现在在finishMonthInput变量中,您将传递整数值;如果没有传递值,则将-1传递出去。

从您的代码中删除以下行:

setResult(Activity.RESULT_OK)
............................
var getintent = Intent("ahsb3omrk.show.result")

以及onActivityResult()类中的整个Second方法。

答案 1 :(得分:0)

要在活动之间传递数据,请启动目标活动 使用startActivity(Intent)。 拥有要发送的数据的Intent对象(使用putExtra()方法)。

在第二个活动中,通过onCreate()方法中的intent参数访问数据

The developer website上有一篇有关如何完成所有这些操作的文章。