2013-03-10 23 views
6

Tôi đang gọi activityB từ activityA và truyền một đối tượng lớp bằng ý định.Android - Cách gửi dữ liệu trở lại hoạt động gọi điện

Intent intentB = new Intent(v.getContext(), activityB.class); 
intentB.putExtra("data", data); //data is a class object 
startActivity(intentB); 

Hoạt độngB bắt đầu tốt và tôi cũng có thể trích xuất dữ liệu. Trong activityB, tôi đang sửa đổi đối tượng dữ liệu. Tôi muốn gửi đối tượng dữ liệu đã sửa đổi này trở lại activityA khi activityB.onDestroy() được gọi.

Bạn có lời khuyên nào không?

Đây là mã của tôi:

activityA, bắt đầu từ Intent:

Intent i = new Intent(this, activityB.class); 
i.putExtra("object", Class.object); 
startActivityForResult(i, 1); 

activityA, bắt mục đích:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1) {  
     object = data.getParcelableExtra("object"); //the Class implements Parcelable 
    } 
} 

activityB

protected void onDestroy() { 
    Intent data = new Intent(); 
    setResult(RESULT_OK, data) 
    finish(); // ends current activity 
} 
+0

Tôi thành thật nghĩ rằng bạn đang tốt hơn để chỉ có một giao diện - đó là rất dễ dàng https://developer.android.com/ đào tạo/khái niệm cơ bản/phân đoạn/communicating.html – Fattie

Trả lời

9

Sử dụng ActivityResult.

  1. Sử dụng startActivityForResult(int, Intent)
  2. Để thiết lập thông tin trong hoạt động B, sử dụng setResult(RESULT_OK, data) (nơi dữ liệu là Intent)
  3. Override onActivityResult(int, int, Intent) và bắt data -Intent

Hoạt động A, bắt đầu Intent :

Intent i = new Intent(this, SecondActivity.class); 
startActivityForResult(i, 1); 

Hoạt động A, bắt dữ liệu:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 1) {  
     // make use of "data" = profit 
    } 
} 

Hoạt động B:

Intent data = new Intent(); 
setResult(RESULT_OK, data) 
finish(); // ends current activity 
+0

Tôi nên đặt mục đích dữ liệu trong hoạt độngB ở đâu? Tôi đã thử đặt nó trong 'activityB.onDestroy()', nhưng dữ liệu Intent trong 'activityA.onActivityResult()' là null – anirus

+0

@anirus nó sẽ hoạt động trong 'onDestroy()'. – poitroae

+0

Tôi vẫn nhận được 'NullPointerException'. Đây là mã của tôi. – anirus

Các vấn đề liên quan