![](/img/trans.png)
[英]How to save the data in my ListView from the first Activity to the second Activity?
[英]Move Data from Second Activity to first Activity
我有一個活動,該活動的文本為空,您可以單擊添加項目以將文本添加到文本,因此當我嘗試將第二個Activity
的數據添加到主文本時,該應用程序甚至無法啟動。
主要活動
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView1: TextView = findViewById(R.id.num1)
val textView2: TextView = findViewById(R.id.num2)
val Button: Button = findViewById(R.id.button)
val intent = intent
val message: String = intent.getStringExtra(SecondActivity.EXTRA_MESSAGE)
textView1.setText(message)
Button.setOnClickListener(){
val intent: Intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
}
}
SecondActivity:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val item = edit.text.toString()
button.setOnClickListener(){
val intent = Intent(this, MainActivity::class.java)
intent.putExtra(EXTRA_MESSAGE , item)
startActivity(intent)
}
}
companion object {
val EXTRA_MESSAGE: String =
"com.example.android.twoactivities.extra.MESSAGE"
}
打算從第一個活動接收后從第二個活動接收數據。
步驟1:通過將Intent與startActivityForResult(Intent intent,int REQUEST_CODE)一起使用Intent啟動Second Activity ,您將收到從第二Activity發送的數據
val intent:Intent = Intent(this,SecondActivity :: class.java)startActivityForResult(intent,101)
第2步:打開Second Activity,然后在要完成Second Activity的位置 (即要將數據發送到First Activity的位置 )編寫以下代碼: 注意 :“ KEY”和數據類型傳遞對於獲取結果很重要第一次活動
val value : String = "sendBackData"
val intent = Intent()
resultIntent.putExtra("KEY", value)
setResult(Activity.RESULT_OK, intent)
finish()
步驟3:在第一個活動中。 創建重寫方法onActivityResult以使用“ KEY”將數據獲取到First Activity中
注:內第一個活動的onActivityResult的第二個活動的關鍵和重點應該是相同的。
override fun onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101 && resultCode == RESULT_Ok && data != null){
val str : String = data.getStringExtra("KEY")
}
}
你需要打電話
startActivityForResult(intent, request_code) ;
代替
startActivity(intent);
為了在onActivityResult方法中接收響應。
嗨,請使用startActivityForResult(intent, requestcode);
並在您的SecondActivty中使用此
val myintent = Intent()
resultIntent.putExtra("YourKey", value)
setResult(Activity.RESULT_OK, myintent)
finish()
重新運行到您的MainActivity。
首先,從MainActivity到SecondActivity,您需要使用startActivityForResult()
val requestCode = 0
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("your key","your value")
this.startActivityForResult(intent, requestCode)
您聲明一個請求代碼(一個整數),像現在一樣聲明意圖,然后將關鍵字放入意圖中,並添加額外的內容。 重要部分:您需要將startActivityForResult與您的意圖和請求代碼一起使用。
現在,在第二個活動中,獲取您的意圖字符串:
val string = intent.getStringExtra("your key")
准備好返回值時,請使用:
val resultCode = 1
val returnIntent = Intent()
returnIntent.putExtra("your key","your value")
setResult(resultCode, intent)
finish()
在創建新的Intent的地方,將需要放入的Intent Extras放入其中,並用setResult返回-記住resultCode和requestCode。 finish()用於關閉您當前所在的活動(僅設置結果不會關閉該活動)
最后,在主要活動上,您需要重寫此方法:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == yourRequestCode){
if (resultCode == yourResultCode){
//do something
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.