2014-12-27 38 views
0

我们如何刷新活动的UI以反映对模型的更改。由于型号更改而刷新UI

我有两个活动叫做DonorDetailActivityDonorEditActivity

两者都代表一个模型,称为捐助者这是一个普通的对象。从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。

+0

完成并重新启动DonorDetailActivity? –

+0

可以工作,但我很困惑,finish()会实际上停止代码的执行,并返回到以前的活动。但它会继续执行再次启动DonorDetailActivity的下一行。当然有用! – Jatin

+0

'finish()'关闭活动。所以,当你重新启动时,它会加载全新的更新细节。 –

回答

0

完成并重新启动DonorDetailActivity将会起作用。

finish()关闭活动。
因此,当您重新启动它时,它会加载全新的更新细节。