2014-12-27 39 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()關閉活動。
因此,當您重新啓動它時,它會加載全新的更新細節。