簡體   English   中英

將數據從第二個活動移到第一個活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM