如何在超过2个活动之间传递数据Kotlin

时间:2019-04-16 03:48:22

标签: android kotlin

我需要在两个以上的活动之间传递多个变量。

我知道如何在彼此之间传递,而不是从第一至第三。

活动一

btnNext.setOnClickListener {
  val i = Intent(this, Activity2::class.java)
  val variableOne= txtVariableOne.text.toString()
  i.putExtra("VARIABLEONE",variableOne)
  startActivity(i)
}

两个活动

btnNext.setOnClickListener {
  val i = Intent(this, Activity3::class.java)
  val VariableTwo = txtVariableTwo.text.toString()
  i.putExtra("VARIABLETWO",variableTwo)
  startActivity(i)
}

三项活动(这是我所需要的)

Log.d("DEBUG ", "Value: " + intent.getStringExtra("VARIABLEONE"))
Log.d("DEBUG ", "Value: " + intent.getStringExtra("VARIABLETWO"))

我需要从活动三访问VariableOneVariableTwo

谢谢

3 个答案:

答案 0 :(得分:0)

两个活动

btnNext.setOnClickListener {
  val i = Intent(this, Activity3::class.java)
  val VariableTwo = txtVariableTwo.text.toString()

  //THIS WHAT YOU NEED:
  i.putExtra("VARIABLEONE",intent.getStringExtra("VARIABLEONE"));

  i.putExtra("VARIABLETWO",variableTwo)
  startActivity(i)
}

答案 1 :(得分:0)

第二项活动

 override fun viewAllNotes() {
    val intent : Intent = Intent(this, ViewAllNotesActivity::class.java)
     intent .putExtra("VARIABLEONE",variableOne)
    startActivityForResult(intent, VIEW_ALL_REQUEST_CODE)
  }


  override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
 super.onActivityResult(requestCode, resultCode, data)
 if (resultCode == Activity.RESULT_OK){
    if (requestCode == VIEW_ALL_REQUEST_CODE){
  //get data here
        }
    }
    }
 }

活动三

@Override
public void onBackPressed() {
    Intent result = new Intent();
    result .putExtra("VARIABLEONE",variableOne)        
    setResult(Activity.RESULT_OK, result);
    this.finish();
  }

否则,您可以使用Shared-preference存储值,并在项目中的任何位置获取值

答案 2 :(得分:0)

我可以说和我们传入java一样 有很多方法
从一个角度出发,您可以在启动另一个活动时按意图传递,这在启动活动时考虑到诸如波纹管这样的数据时很合适,

val intent = Intent(mActivity, LoginActivity::class.java);
intent.putExtra("keyName", data)
startActivity(intent)

您可以使用首选项或优先存储数据的另一种方式,并且可以在任何需要的地方使用。