У меня есть одно действие A, в котором есть одна кнопка и одно представление списка, в котором отображаются названия книг. при нажатии кнопки начинается действие B, пользователь заполняет форму книги и сохраняет ее. когда он нажимает кнопку «Назад», пользователь переходит к действию A. Здесь имя книги должно быть обновлено в списке. Думаю, мне нужно написать код в onResume(). Подскажите пожалуйста, что написать. Я использую настраиваемый вид списка.
перезапустить активность в андроиде
Ответы (3)
Запустите действие B с помощью startActivityForResult()
и используйте метод onActivityResult()
для перезапуска или обработки новых данных.
Например, чтобы начать действие B:
String callingActivity = context.getLocalClassName();
Intent newActivity = new Intent(getApplicationContext(),ActivityB.class);
newActivity.setData(Uri.parse(callingActivity));
startActivityForResult(newActivity, 0);
Затем где-то в вашем классе Activity A:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == 0){
// do processing here
}
}
Других ответов должно быть достаточно, но onResume() можно вызывать в тех случаях, когда активность возобновляется другими способами.
Чтобы просто перезапустить Activity A, когда пользователь нажимает кнопку «Назад» из Activity B, поместите следующее внутри onActivityResult:
if(requestCode == 0){
finish();
startActivity(starterintent);
}
И в onCreate Activity A добавьте starterintent = getIntent();
Просто не забудьте инициировать переменную с помощью Intent starterintent;
где-то до вызова onCreate.
e.g.
public class ActivityA extends ListActivity {
Intent starterintent;
public void onCreate(Bundle b){
starterintent = getIntent();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == 0){
finish();
startActivity(starterintent);
}
}
private void startActivityB(){
String callingActivity = context.getLocalClassName();
Intent newActivity = new Intent(getApplicationContext(),ActivityB.class);
newActivity.setData(Uri.parse(callingActivity));
startActivityForResult(newActivity, 0);
}
}
Затем просто вызовите startActivityB()
нажатием кнопки или что-то еще
Да ты прав. Пишите код в onResume.
Когда вы обновите дату, просто вызовите notifyDataSetChanged(); для вашего адаптера ListView
Надеюсь, это поможет вам!
Вы можете либо начать действие, когда пользователь нажмет «Сохранить», и оно исправит это для вас. Или, если вы хотите нажать назад:
@Override
public void onResume(){
super.onResume();
list.clear();
list.addAll(getBooks());
adapter.notifyDataSetChanged();
}