Запустите действие, rangeIP_test
, для результата (т. Е. Списка строк хостов) следующим образом:
Intent intent = new Intent(MainActivity.this, rangeIP_test.class);
startActivityForResult(intent,RC_LIST_STRING);
Определите RC_LIST_STRING как поле, подобное этому в MainActivity.java
:
private static final int RC_LIST_STRING = 10001;
Переопределить onActivityResult () в MainActivity.java
следующим образом:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == RC_LIST_STRING) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// get the list of strings here
ArrayList<String> myHosts = (ArrayList<String>) data.getSerializableExtra("myHosts"); // key must be matching
// do operations on the list
}
}
}
В rangeIP_test.java
после успешного получения всех хостов и добавления их в список,Вы можете передать список обратно любой активности (здесь, MainActivity
), начавшей текущую деятельность (здесь, rangeIP_test
) следующим образом:
Intent intent = new Intent();
intent.putExtra("myHosts", (Serializable) IPs);
setResult(RESULT_OK, intent);
finish();
Теперь, когда вы завершили rangeIP_test
действиевы вернулись к MainActivity
и, поскольку вы переопределили onActivityResult()
, вы получите список хостов там.
Имейте в виду, что в этом примере вы конвертируетесписок хостов в сериализованный тип и передача его в предыдущее действие.Поскольку String и ArrayList уже реализуют интерфейс Serializable , вы не получите никакой ошибки unable to marshal value
.Однако, передавая объекты модели вокруг действий, вы должны сначала заставить класс модели реализовать интерфейс Serializable
, а затем продолжить работу, как описано выше.
Лучший подход заключается в преобразовании классов модели в Parcelable , а затем передать данные среди действий.Пожалуйста, обратитесь к этой ссылке для получения дополнительной информации.