2

我正在尝试将用户的输入发送到第二个屏幕。值为dgcoutMEA等。下面是主要活动的代码,带有一个将您发送到第二个屏幕的按钮:

package com.example.prodapp12

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main.sulfur


class MainActivity : AppCompatActivity() {

    companion object {
        const val dgc = "dgc" // key for Your value, You have to define each key for every value that You want to pass to another activity
        const val dcx = "dcx"
        const val outmea = "outmea"
        const val outdea = "outdea"
        const val sulfur = "sulfur"
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val dgc = dgc
        val dcx = dcx
        val outmea = outmea
        val outdea = outdea
        val sulfur = sulfur



class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_rezultate)

        val dcx = intent.getStringExtra(MainActivity.dcx) // receive saved value
        Log.d("dcx", "Your value: dcx") // D/MyTag: Your value: My string
        val dgc = intent.getStringExtra(MainActivity.dgc)
        Log.d("dgc", "Your value: dgc")
        val outmea = intent.getStringExtra(MainActivity.outmea)
        Log.d("outmea", "Your value: outmea")
        val outdea = intent.getStringExtra(MainActivity.outdea)
        Log.d("outdea", "Your value: outdea")
        val sulfur = intent.getStringExtra(MainActivity.sulfur)
        Log.d("sulfur", "Your value: sulfur")

    }
}
        calc.setOnClickListener {
            val intent = Intent(this, ResultActivity::class.java).apply {
                putExtra("dcx", "dcx") // add value to intent with defined key
                putExtra("dgc", "dgc") // add value to intent with defined key
                putExtra("outmea", "outmea") // add value to intent with defined key
                putExtra("outdea", "outdea") // add value to intent with defined key
                putExtra("sulfur", "sulfur") // add value to intent with defined key
            }
            startActivity(Intent(this, Rezultate::class.java))

        }
    }
}

inMEA是一个 textView 需要使用来自第一个屏幕的输入值显示一些简单的算术计算 这是第二个屏幕:包 com.example.prodapp12

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_rezultate.*




class Rezultate : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_rezultate)

        val extras = intent.extras
        if (extras != null) {
            val dcx = extras.getString("dcx")
            val dgc = extras.getString("dgc")
            val outmea = extras.getString("outmea")
            val outdea = extras.getString("outdea")
            val sulfur = extras.getString("sulfur")
            //The key argument here must match that used in the other activity
        }


        Ref.setOnClickListener {
            inMEA.text = intent.getStringExtra(MainActivity.sulfur)

        }
    }
}
4

2 回答 2

0

这是您如何执行此操作的示例:

主要活动:

class MainActivity : AppCompatActivity() {

    companion object {
        const val YOUR_VALUE_KEY = "YOUR_VALUE_KEY" // key for Your value, You have to define each key for every value that You want to pass to another activity
    }

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

        val yourValue = "My string"

        // create listenner for button
        buttonGoToResultActivity.setOnClickListener {
            val intent = Intent(this, ResultActivity::class.java).apply { 
                putExtra(YOUR_VALUE_KEY, yourValue) // add value to intent with defined key
            }
            startActivity(intent) // start activity
        }

    }
}

结果活动:

class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        val receivedYourValue = intent.getStringExtra(MainActivity.YOUR_VALUE_KEY) // receive saved value
        Log.d("MyTag", "Your value: $receivedYourValue") // D/MyTag: Your value: My string

    }
}

主要活动:

class MainActivity : AppCompatActivity() {

    companion object {
        const val DGC_KEY = "DGC_KEY"
        const val DCX_KEY = "DCX_KEY"
        const val OUTMEA_KEY = "OUTMEA_KEY"
        const val OUTDEA_KEY = "OUTDEA_KEY"
        const val SULFUR_KEY = "SULFUR_KEY"
    }

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

        val dgc = "dgc_value"
        val dcx = "dcx_value"
        val outmea = "outmea_value"
        val outdea = "outdea_value"
        val sulfur = "sulfur_value"

        calc.setOnClickListener {
            val intent = Intent(this, ResultActivity::class.java).apply {
                putExtra(DGC_KEY, dgc)
                putExtra(DCX_KEY, dcx)
                putExtra(OUTMEA_KEY, outmea)
                putExtra(OUTDEA_KEY, outdea)
                putExtra(SULFUR_KEY, sulfur)
            }
            startActivity(intent)
        }
    }
}

结果活动:

class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        val dgc = intent.getStringExtra(MainActivity.DGC_KEY)
        val dcx = intent.getStringExtra(MainActivity.DCX_KEY)
        val outmea = intent.getStringExtra(MainActivity.OUTMEA_KEY)
        val outdea = intent.getStringExtra(MainActivity.OUTDEA_KEY)
        val sulfur = intent.getStringExtra(MainActivity.SULFUR_KEY)

        Log.d("MyTag", "dgc = $dgc")
        Log.d("MyTag", "dcx = $dcx")
        Log.d("MyTag", "outmea = $outmea")
        Log.d("MyTag", "outdea = $outdea")
        Log.d("MyTag", "sulfur = $sulfur")
    }
}

日志:

D/MyTag: dgc = dgc_value
D/MyTag: dcx = dcx_value
D/MyTag: outmea = outmea_value
D/MyTag: outdea = outdea_value
D/MyTag: sulfur = sulfur_value
于 2020-09-24T14:54:20.213 回答
0

还有一种更可重用的方法。

   class ResultsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val param1 = intent.getStringExtra(PARAM1)
        val param2 = intent.getStringExtra(PARAM2)
        val param3 = intent.getIntExtra(PARAM3,0)
        Log.d("PARAMS::","$param1,$param2,$param3")
    }

    companion object {

        private const val PARAM1 = "param_1"
        private const val PARAM2 = "param_2"
        private const val PARAM3 = "param_3"

        fun start(context: Context, param1: String, param2: String, param3:Int){
            val intent = Intent(context, ResultsActivity::class.java).apply {
                putExtra(PARAM1, param1)
                putExtra(PARAM2, param2)
                putExtra(PARAM3, param3)
            }
            context.startActivity(intent)
        }
    }}

然后在主要活动中,

 class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        someButton.setOnClickListener {
            //You can just call this in any other place you may want to open the ResultsActivity
            ResultsActivity.start(this, "Hello", "World", 100)
        }
    }}

结果

D/PARAMS:: Hello,World,100
于 2020-09-24T19:09:07.260 回答