На активность А:
-Создание намерению, с указанием Wich активности вы хотите начать
-Положите данные о таком намерении быть получены деятельности В.
-Начало активность для результата.
-On onActivityResult()
убедитесь, что у вас есть данные, чтобы получать и делать с ними то, что вы хотите.
На активности B:
-onCreate()
получать данные от активности А;
-Модифицируйте данные по вашему желанию;
-Создание нового намерения;
-Задать данные в намерении;
-Установить результаты деятельности и данные о намерениях.
-finish активность B
Ниже приведен пример из шагов, которые я описываю, что она делает это есть задание А начать активность B, и передавая ей пустой ArrayList. Затем в Activity B массивList заполняется и отправляется обратно в Activity A, где содержимое списка элементов массива отображается на экране.
Код:
активность A:
private static final int REQUEST_LIST = 1;
ArrayList<String> myList;
TextView listText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listText = (TextView) findViewById(R.id.mylist_text);
myList = new ArrayList<String>();
Intent i = new Intent(MainActivity.this, ActivityB.class);
i.putExtra(ActivityB.EXTRA_ARRAY, myList);
startActivityForResult(i, REQUEST_LIST);
}
@Override
protected void
onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) return;
if (requestCode == REQUEST_LIST) {
myList = (ArrayList<String>) data.getSerializableExtra(ActivityB.EXTRA_ARRAY);
StringBuilder text = new StringBuilder();
for (int j = 0; j < myList.size(); j++) {
text.append(myList.get(j) + " ");
}
listText.setText(text.toString());
}
}
Activty B:
public static final String EXTRA_ARRAY = "com.example.androidtest.mainactivity.array";
ArrayList<String> myList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityb_layout);
myList = (ArrayList<String>) getIntent().getSerializableExtra(EXTRA_ARRAY);
for (int i = 0; i < 10; i++) {
myList.add(String.valueOf(i));
}
Intent data = new Intent();
data.putExtra(EXTRA_ARRAY, myList);
setResult(Activity.RESULT_OK, data);
finish();
}
Внимание: Вы не можете забыть объявить активность B в файле манифеста , Также обратите внимание на то, как действия знают, какие данные следует отправлять и собирать с помощью констант, созданных в классах, которые должны быть последовательными, поэтому избегайте использования литералов и используйте определенные константы.
Прежде всего, вы не должны быть так много на 'onCreate()'. – m0skit0
Рассмотрите возможность чтения http://developer.android.com/training/basics/intents/result.html, более конкретно метода startActivityForResult. Должен служить вашим потребностям – pedromss
Почему B снова запускает A? Если вы запуститеActivityForResult(), и A получит уведомление о завершении B, и вы сможете делать все, что вам нужно, в onActivityResult() в A – natez0r