【Android踩坑】返回數據給上一個活動

一個小小的知識點也會帶來很多問題。

①首先在上一個活動跳轉下一個活動要用以下方法跳轉

startActivityForResult(intent2, 1);
其中1可以爲其他值,這個相當於給下一個活動打上標記,方便在返回接受函數onActivityResult中進行處理

②返回數據到上一個活動有兩種方式:

第一種方式:通過頁面按鈕返回,在當前活動類中按鈕點擊函數

public void clickBack(View view){
    Intent intent = new Intent();
    intent.putExtra("dataReturn", "Hello FirstActivity");
    setResult(RESULT_OK, intent);
    finish();
}

注意點:net Intent()不能傳送參數,一定要setResult()

第二種方式:通過手機Back按鈕返回,在當前活動類中重寫函數onBackPressed

@Override
public void onBackPressed() {

// super.onBackPressed();//不能夠有該行代碼,否則返回崩潰
Intent intent = new Intent();
intent.putExtra(“dataBack”, “Hello Back”);
setResult(RESULT_OK, intent);
finish();
}
③在上一個活動中重寫函數onActivityResult()對返回的Intent進行處理

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("data",data.toString());
    switch(requestCode){
        case 1 :
            if(resultCode == RESULT_OK){
                String dataReturn = data.getStringExtra("dataReturn");
                if(dataReturn != null){
                    Log.d("dataReturn",dataReturn);
                }
                String dataBack = data.getStringExtra("dataBack");
                if(dataBack != null){
                    Log.d("dataBack", dataBack);
                }
            }
            break;
        default : break;
    }
}

requestCode就是第一步中的1或者其他,這主要是標記跳轉到的哪個活動頁面以及從該頁面返回的。

startActivityForResult(intent2, 1);
resultCode就是在下一個活動頁面返回serResult()傳遞過來的值。

另外一個小知識點:Log不能打印null值,否者會報空指針錯誤,程序崩潰!!!

非常坑的一點就是
如果你兩個活動中傳值的dataReturn單詞拼寫錯誤的話就會出現崩潰,一萬你的null值不能被打印,因爲Log不能打印null值,而你的語法結構在檢查中卻發現沒有錯誤,所以在出現此類錯誤的時候,首先要檢查的是變量的名稱書寫是否出現錯誤


版權聲明:本文爲CSDN博主「秦藝」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35900047/article/details/52888190

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章