在Android开发中,finish()
方法用于关闭当前Activity。如果你想要在关闭Activity之前处理一些逻辑或者获取返回值,你可以使用以下方法:
startActivityForResult()
和onActivityResult()
方法:在启动一个新的Activity时,使用startActivityForResult()
方法并传入一个请求码。然后,在新Activity中,当用户完成操作后,使用setResult()
方法设置结果数据,并调用finish()
方法关闭新Activity。最后,在调用startActivityForResult()
方法的Activity中,重写onActivityResult()
方法,根据请求码获取结果数据。
示例:
启动新Activity:
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, REQUEST_CODE);
在新Activity中设置结果数据并关闭Activity:
setResult(RESULT_OK);
finish();
在调用startActivityForResult()的Activity中获取结果数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// 处理结果数据
}
}
}
SharedPreferences
或数据库
存储返回值:在新Activity中,将返回值存储在SharedPreferences
或数据库中。然后,在调用finish()
方法关闭新Activity之前,确保已经存储了返回值。在调用startActivityForResult()
方法的Activity中,从SharedPreferences
或数据库中读取返回值并进行处理。
示例(使用SharedPreferences
):
在新Activity中存储返回值:
SharedPreferences sharedPreferences = getSharedPreferences("result", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("result", "your_result_data");
editor.apply();
finish();
在调用startActivityForResult()的Activity中读取返回值:
SharedPreferences sharedPreferences = getSharedPreferences("result", MODE_PRIVATE);
String resultData = sharedPreferences.getString("result", null);
if (resultData != null) {
// 处理结果数据
}
这些方法可以帮助你在关闭Activity之前处理逻辑或获取返回值。你可以根据你的需求选择合适的方法。