Android finish方法返回值如何處理

小樊
81
2024-10-10 21:50:05

在Android開(kāi)發(fā)中,finish()方法用于關(guān)閉當(dāng)前Activity。如果你想要在關(guān)閉Activity之前處理一些邏輯或者獲取返回值,你可以使用以下方法:

  1. 使用startActivityForResult()onActivityResult()方法:

在啟動(dòng)一個(gè)新的Activity時(shí),使用startActivityForResult()方法并傳入一個(gè)請(qǐng)求碼。然后,在新Activity中,當(dāng)用戶完成操作后,使用setResult()方法設(shè)置結(jié)果數(shù)據(jù),并調(diào)用finish()方法關(guān)閉新Activity。最后,在調(diào)用startActivityForResult()方法的Activity中,重寫onActivityResult()方法,根據(jù)請(qǐng)求碼獲取結(jié)果數(shù)據(jù)。

示例:

啟動(dòng)新Activity:

Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, REQUEST_CODE);

在新Activity中設(shè)置結(jié)果數(shù)據(jù)并關(guān)閉Activity:

setResult(RESULT_OK);
finish();

在調(diào)用startActivityForResult()的Activity中獲取結(jié)果數(shù)據(jù):

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            // 處理結(jié)果數(shù)據(jù)
        }
    }
}
  1. 使用SharedPreferences數(shù)據(jù)庫(kù)存儲(chǔ)返回值:

在新Activity中,將返回值存儲(chǔ)在SharedPreferences或數(shù)據(jù)庫(kù)中。然后,在調(diào)用finish()方法關(guān)閉新Activity之前,確保已經(jīng)存儲(chǔ)了返回值。在調(diào)用startActivityForResult()方法的Activity中,從SharedPreferences或數(shù)據(jù)庫(kù)中讀取返回值并進(jìn)行處理。

示例(使用SharedPreferences):

在新Activity中存儲(chǔ)返回值:

SharedPreferences sharedPreferences = getSharedPreferences("result", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("result", "your_result_data");
editor.apply();
finish();

在調(diào)用startActivityForResult()的Activity中讀取返回值:

SharedPreferences sharedPreferences = getSharedPreferences("result", MODE_PRIVATE);
String resultData = sharedPreferences.getString("result", null);
if (resultData != null) {
    // 處理結(jié)果數(shù)據(jù)
}

這些方法可以幫助你在關(guān)閉Activity之前處理邏輯或獲取返回值。你可以根據(jù)你的需求選擇合適的方法。

0