在Android開(kāi)發(fā)中,finish()
方法用于關(guān)閉當(dāng)前Activity。如果你想要在關(guān)閉Activity之前處理一些邏輯或者獲取返回值,你可以使用以下方法:
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ù)
}
}
}
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ù)你的需求選擇合適的方法。