Прежде чем перейти к реальному ответу, я хотел бы показать некоторые улучшения в вашем коде. Во-первых, при создании Intent (или когда требуется контекст в целом) от деятельности нет необходимости вызывать getBaseContext()
, вы можете просто использовать this
:
intent = new Intent(this, NewTestActivity.class);
Во-вторых, андроид хорошо погрузочно-разгрузочных работах, вам не нужно закрывать свое первое действие вручную с помощью finish()
. Android автоматически приостанавливает или останавливает ваше первое действие и возвращает его, когда вы вернетесь к нему.
В-третьих, в вашем случае вы можете использовать startActivityForResult()
вместо startActivity()
по причинам, которые я объясню ниже.
Это сделает ваш код выглядеть следующим образом:
private static final int MY_REQUEST_CODE = 33487689; //put this at the top of your Activity-class, with any unique value.
intent = new Intent(this, NewTestActivity.class);
startActivityForResult(intent, MY_REQUEST_CODE);
Теперь startActivityForResult()
начинает деятельность и ждет результата от этой новой деятельности.При вызове finsih()
в новой деятельности вы будете в конечном итоге в первом Activitys onActivityResult()
-метода, с данными, поставляемых из нового Activty, что в настоящее время закрыты:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode != MY_REQUEST_CODE) return; //We got a result from another request, so for this example we can return.
if(resultCode != RESULT_OK) return; //The user aborted the action, so we won't get any data.
//After the above if-statements we know that the activity that gives us a result was requested with the correct request code, and it's action was successful, we can begin extracting the data, which is in the data-intent:
Item item = (Item) data.getSerializableExtra("customData"); //casts the data object to the custom Item-class. This can be any class, as long as it is serializable. There are many other kinds of data that can be put into an intent, but for this example a serializable was used.
itemList.add(item); //This is the list that was specified in onCreate()
//If you use an Adapter, this is the place to call notifyDataSetChanged();
}
Для этого все, чтобы работать, мы должны сделать некоторые вещи во второй активность: Когда элемент был создан, мы должны установить результат:
//We begin by packing our item in an Intent (the Item class is an example that is expected to implement Serializable)
Item theCreatedItem; //This is what was created in the activity
Intent data = new Intent();
data.putSerializable(theCreatedItem);
setResult(RESULT_OK, data);
finish();
Это должно вернуться к первому Activitys onActivityResult()
-метода с пунктом, как описано выше.
У вас есть код в методе onResume()? Обычно onResume будет вызываться для последующих операций. – kosa
нет, действие для загрузки списка находится в методе onCreate(). – AuTi
Попробуйте добавить то же самое в onResume() и также посмотреть. – kosa