Как обновить пользовательский интерфейс активности, чтобы отразить изменения в Модели.Обновить пользовательский интерфейс из-за изменения модели
Я два мероприятия под названием DonorDetailActivity и DonorEditActivity.
Оба представляют собой модель под названием Донор, который является простым объектом. От DonorDetailActivitystartActivityForResult() выполнен для получения DonorEditActivity. В DonorEditActivity после Донор (модель) отредактирован, мы вернулись на DonorDetailActivity. После показать поток
MainAcitvity ==>> DonorListActivity ==> DonorDetailActivity ==> DonorEditActivity
Вот код вида деятельности, который я использую (без учета основного и списка активности)
DonorDetailActivity
public class DonorDetailActivity extends ActionBarActivity {
private View detailView;
private Donor donor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
donor = (Donor) bundle.getSerializable("DONOR");
detailView = getLayoutInflater().inflate(R.layout.activity_donor_detail,null);
TextView txvUserId = (TextView) detailView.findViewById(R.id.txvUserId);
txvUserId.setText(donor.getUserId());
//Other properties of Donor ......
Button btnEditDonor = (Button) detailView.findViewById(R.id.btnEditDonor);
btnEditDonor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent donorEditIntent = new Intent(DonorDetailActivity.this, DonorEditActivity.class);
donorEditIntent.putExtra("DONOR", donor);
startActivityForResult(donorEditIntent, DONOR_EDIT_REQUEST);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == DONOR_EDIT_REQUEST) {
if (resultCode == RESULT_OK) {
donor = (Donor) data.getSerializableExtra("DONOR");
//ToDo refresh screen with edited Donor object
//How to do this
}
}
}
}
}
DonorEditActivity
public class DonorEditActivity extends ActionBarActivity implements AsyncTaskCallback<String> {
private static final int DONOR_EDIT_REQUEST = 1;
private View editView;
private Donor donor;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
}
//Donor edit complete. Return to Detail Class with modified Donor object
@Override
public void onAsyncTaskCompleted(String result) {
Intent detailIntent = new Intent();
detailIntent.putExtra("DONOR", donor); //Modified Donor object
if (result == null || result.length() == 0){
setResult(RESULT_OK, detailIntent);
}
else {
setResult(RESULT_CANCELED, detailIntent);
}
finish();
}
}
Итак, как обновить пользовательский интерфейс, когда я вернусь в DonorDetailActivity с модифицированным Донором.
Завершить и перезапустить DonorDetailActivity? –
Работает, но я был в замешательстве, что finish() фактически остановит выполнение кода и вернется к предыдущему действию. Но он продолжит выполнение следующей строки снова запускает DonorDetailActivity. Конечно работает! – Jatin
'finish()' закрывает действие. Поэтому, когда вы перезагружаете его, он загружается совершенно новым, с обновленными данными. –