【问题标题】:Android - pass data to another activity [duplicate]Android - 将数据传递给另一个活动[重复]
【发布时间】:2018-12-08 15:44:06
【问题描述】:

我尝试从 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"
    }
}


}

【问题讨论】:

  • 这正是我所做的!

标签: android android-intent kotlin


【解决方案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")

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

【讨论】:

  • 并显示数据但仍然不起作用
  • 什么不起作用?
  • 没有数据显示
  • onCreate()这一行之后签入val finishMonthInput = intent.getIntExtra("Month", -1)finishMonthInput的值是否正确。如果是,那么您正确地传递了值,如果不是,那么您做错了什么。在你得到finishMonthInput的值之后,也把这行viewMonth.text = finishMonthInput.toString()放到onCreate()中。
  • 它的工作,但你为什么使用 -1
【解决方案2】:

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

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

The developer website 有一篇关于如何做到这一点的文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多