2013-03-17 11 views
7

đây là mã của tôi để gửi dữ liệu bằng ý định nhưng tôi không muốn mở thêm hoạt động tôi chỉ muốn gửi dữ liệu mà không cần mở nó ..Làm thế nào để gửi dữ liệu thông qua ý định trong Android mà không cần mở một hoạt động khác?

Bundle contain = new Bundle(); 
      contain.putString("key4", item); 
      contain.putString("price", price); 

Intent a = new Intent(Searchbydate.this, Searchbyitem.class); 
      a.putExtras(contain); 
      startActivity(a); 

đây tôi không muốn mở Searchbyitem này. lớp học chỉ gửi dữ liệu ...

+0

Và sau đó cho những gì bạn muốn gửi dữ liệu? nó làm cho không có sence cho tôi. – Sajmon

+1

@sajmon tôi đang gửi dữ liệu này để hiển thị trong một hoạt động khác nhưng không muốn mở nó thông qua hoạt động này, bây giờ điều đó có hợp lý với bạn không? – scripter

+2

bây giờ có xin lỗi> :) bạn vì vậy bây giờ bạn có thể lưu giá trị vào SharedPreferences và sau đó lấy chúng bất cứ khi nào bạn muốn. – Sajmon

Trả lời

3

Bạn cũng gọi sử dụng SharedPreferences để archieve rằng

1

Bạn có thể thử EventBus hoặc Otto thư viện Android để giao tiếp giữa các hoạt động, dịch vụ và các mảnh vỡ ..

Vì vậy, bạn nên tạo một Dịch vụ để chuyển dữ liệu và để liên lạc giữa các hoạt động, các đoạn vv, sử dụng xe buýt sự kiện

3

Y Tôi cũng đã phải đối mặt với vấn đề này.

Nhiều nhà phát triển cũng gặp phải sự cố khi truyền dữ liệu từ hộp thoại đến hoạt động khác thông qua Intent hoặc Bundle. Nó trả về null tại thời gian truy xuất từ ​​một hoạt động khác.

Và giải pháp duy nhất là SharedPreferences.

Nhưng bạn phải đặt nó bên trong nút gạt bỏ. (Ví dụ: ok/hủy vv)

Và lấy dữ liệu từ các hoạt động khác một cách dễ dàng thông qua các khóa tương tự. Không sử dụng bất kỳ dịch vụ nào theo sau mục đích phát sóng.

Các mã trong hoạt động thoại là như thế này:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setIcon(R.drawable.mailicon); 
    builder.setTitle(name); 
    builder.setView(view); 

    builder.setPositiveButton("Send Request",new DialogInterface.OnClickListener() 
    { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
    String mailID = id.getText().toString(); 

    //Here define all your sharedpreferences code with key and value 
    SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE); 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putString("MID", mailID); 
    edit.commit(); 

    } 

}); 

Và từ khác lấy dữ liệu như thế này:

SharedPreferences bb = getSharedPreferences("my_prefs", 0); 
    String m = bb.getString("NUM", ""); 
    Toast.makeText(this, m, Toast.LENGTH_SHORT).show(); 

Thêm một số checkings cho một tiêu chuẩn tốt.

Cảm ơn bạn