Как я могу отправить данные с помощью финиша?
Как я могу отправлять данные из одной активности в другую, используя это:
intent.putExtra("Name", Value);
как я могу отправить данные, когда я использую finish()
, чтобы вернуться к предыдущему действию.
В моем приложении из Activity_A
я перейду в Activity_B
. В Activity_B
я отмечаю местоположение на карте, что дает мне широту и долготу. Затем я хочу использовать этот lat и lng в Activity_A
. Но я не хочу возвращаться к Activity_A
с помощью намерения, потому что я не хочу воссоздавать Activity_A
, поскольку некоторые уже заполненные данные будут потеряны.
Ответы
Ответ 1
Когда вы используете intent.putExtra("Name", Value);
, используйте то же самое, продолжая также действие.
Например:
Из activityA вы вызываете activityB как:
intent.putExtra("Name", Value);
now instead of startActivity() use `startActivityForResult()`
И из activityB, завершая действие, вызывайте:
setResult(RESULT_OK);
Теперь в activityA будет вызываться ваш onActivityResult
, который выглядит следующим образом:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
}
Таким образом, вы можете справиться с этим.
Ответ 2
В действии A:
// Add more, if you call different activities from Activity A
private static final REQUEST_GET_MAP_LOCATION = 0;
void doSomething() {
...
startActivityForResult(theIntentYouUseToStartActivityB, REQUEST_GET_MAP_LOCATION);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_GET_MAP_LOCATION && resultCode == Activity.RESULT_OK) {
int latitude = data.getIntExtra("latitude", 0);
int longitude = data.getIntExtra("longitude", 0);
// do something with B return values
}
}
В действии B:
...
setResult(Activity.RESULT_OK,
new Intent().putExtra("latitude", latitude).putExtra("longitude", longitude));
finish();
...
Ответ 3
Вызовите Activity_B
с startActivityForResult()
с помощью Activity_A
:
//Starting a new Intent
Intent nextScreen = new Intent(getApplicationContext(), Activity_B.class);
// starting new activity
startActivityForResult(nextScreen,1000);
Как только вы закончите работу над Activity_B
, вы вызываете setResult()
для установки данных, а затем finish()
, как этот
//Starting the previous Intent
Intent previousScreen = new Intent(getApplicationContext(), Activity_A.class);
//Sending the data to Activity_A
previousScreen.putExtra("Bla"," Blabla");
setResult(1000, previousScreen);
finish();
Это вернет вас к предыдущему Activity_A
.
В Activity_A
, переопределить onActivityResult()
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
String bla = data.getStringExtra("Bla");
}
Найдено здесь
Ответ 4
используйте startActivityForResult
для запуска B и setResult
до B finish
и обработайте onAcitivityResult
в A