我正在嘗試將我的資料從 Activity 獲取到 Fragment 但無法做到這一點我認為 requestCodes 和 resultCodes 存在問題但找不到它。我做了一些研究,但答案對我沒有幫助。
我在片段中的同伴物件
companion object {
const val REQUEST_PERMISSION = 1001
const val REQUEST_MULTIPLE_PERMISSION = 1002
const val REQUEST_TO_POST = 1003
}
活動片段
view.testButton.setOnClickListener {
val intent = Intent (activity, ReaderActivity::class.java)
startActivityForResult(intent,101)
}
活動碎片
card_results = result;
Log.d(TAG, "ResultActivity data is :" result);
Intent returnIntent = new Intent();
returnIntent.putExtra("cardResult", card_results );
setResult(Activity.RESULT_OK, returnIntent);
finish();
處理資料的片段函式
private fun getDataFromNFC(intent: Intent){
Log.d(TAG, "getDataFromNFC: start")
try {
val result:String = intent.getStringExtra("cardResult").toString()
Log.d(TAG, "getDataFromNFC data is : $result")
}catch (e: NullPointerException){
Log.d(TAG, "error: $e")
Toast.makeText(activity,"Add a card",Toast.LENGTH_SHORT).show()
}
Log.d(TAG, "getDataFromNFC: ends")
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
Log.d(TAG, "onActivityResult: start")
if (requestCode == 101) {
when (requestCode) {
REQUEST_PERMISSION -> {
if (data != null) {
getDataFromNFC(data)
}
}
REQUEST_MULTIPLE_PERMISSION -> {
// Do something if success / failed
}
REQUEST_TO_POST -> {
// Parse result and do something
}
}
}
super.onActivityResult(requestCode, resultCode, data)
Log.d(TAG, "onActivityResult: ends")
}
uj5u.com熱心網友回復:
當您使用此代碼時,您使用的唯一請求代碼是 101 startActivityForResult(intent,101):。
然后在 中onActivityResult,您首先檢查請求代碼是否為 101,這很好,但是您有一個when(requestCode)僅在請求代碼不是 101 時才執行操作的塊,這對于任何一種情況都不會成立,尤其是在 if 內部- 已經保證請求代碼為 101 的塊。
另外,應該注意的startActivityForResult()是,現在不推薦使用Activity Result APIs。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439062.html
上一篇:方向改變時停止重新加載應用程式
