0
我們如何刷新活動的UI以反映對模型的更改。由於型號更改而刷新UI
我有兩個活動叫做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與修改後的捐助者對象時,如何刷新UI。
完成並重新啓動DonorDetailActivity? –
可以工作,但我很困惑,finish()會實際上停止代碼的執行,並返回到以前的活動。但它會繼續執行再次啓動DonorDetailActivity的下一行。當然有用! – Jatin
'finish()'關閉活動。所以,當你重新啓動時,它會加載全新的更新細節。 –