Vượt qua một Bundle khi startActivity ()?


174

Cách chính xác để truyền một gói cho hoạt động đang được khởi chạy từ hoạt động hiện tại là gì? Tài sản chung?

Câu trả lời:


425

Bạn có một vài lựa chọn:

1) Sử dụng Gói từ Ý định :

Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value);  

2) Tạo một gói mới

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);

3) Sử dụng phương thức phím tắt putExtra () của Ý định

Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);


Sau đó, trong Hoạt động đã khởi chạy, bạn sẽ đọc chúng qua:

String value = getIntent().getExtras().getString(key)

LƯU Ý: Các gói có các phương thức "get" và "put" cho tất cả các kiểu nguyên thủy, Parcelables và serializables. Tôi chỉ sử dụng Chuỗi cho mục đích trình diễn.


20

Bạn có thể sử dụng Gói từ Ý định:

Bundle extras = myIntent.getExtras();
extras.put*(info);

Hoặc toàn bộ gói:

myIntent.putExtras(myBundle);

Đây có phải là những gì bạn đang tìm kiếm?


1
Và từ ý định kết quả, bạn gọi getIntent (). GetExtras (). Get * () để lấy những gì đã được lưu trữ trước đó.
yanchenko

16

Truyền dữ liệu từ một Hoạt động sang Hoạt động trong Android

Một ý định chứa hành động và tùy chọn dữ liệu bổ sung. Dữ liệu có thể được chuyển đến hoạt động khác bằng putExtra()phương pháp ý định . Dữ liệu được truyền dưới dạng bổ sung và được key/value pairs. Khóa luôn là một Chuỗi. Là giá trị bạn có thể sử dụng các kiểu dữ liệu nguyên thủy int, float, chars, v.v. Chúng ta cũng có thể truyền Parceable and Serializablecác đối tượng từ hoạt động này sang hoạt động khác.

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);

Lấy dữ liệu gói từ hoạt động Android

Bạn có thể lấy thông tin bằng getData()các phương thức trên đối tượng Intent. Các Ý định đối tượng có thể được truy xuất thông qua các getIntent()phương pháp.

 Intent intent = getIntent();
  if (null != intent) { //Null Checking
    String StrData= intent.getStringExtra(KEY);
    int NoOfData = intent.getIntExtra(KEY, defaultValue);
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
    char charData = intent.getCharExtra(KEY, defaultValue); 
  }

6

Bạn có thể chuyển các giá trị từ hoạt động này sang hoạt động khác bằng Gói. Trong hoạt động hiện tại của bạn, tạo một gói và đặt gói cho giá trị cụ thể và chuyển gói đó cho ý định.

Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);

Bây giờ trong NewActivity của bạn, bạn có thể nhận gói này và lấy lại giá trị của bạn.

Bundle bundle = getArguments();
String value = bundle.getString(key);

Bạn cũng có thể truyền dữ liệu thông qua ý định. Trong hoạt động hiện tại của bạn, hãy đặt ý định như thế này,

Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);

Bây giờ trong NewActivity của bạn, bạn có thể nhận được giá trị đó từ ý định như thế này,

String value = getIntent().getExtras().getString(key);

Tại sao sử dụng một gói trong khi đối tượng mục đích có các phương thức getExtra và putExtra?
Tâm thần 404

0

Viết đây là hoạt động bạn đang ở:

Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);

Trong NextActivity.java

Intent getIntent = getIntent();
//call a TextView object to set the string to
TextView text = (TextView)findViewById(R.id.textview_id);
text.setText(getIntent.getStringExtra("string_name"));

Điều này làm việc cho tôi, bạn có thể thử nó.

Nguồn: https://www.c-sharpcorner.com/article/how-to-send-the-data-one-activity-to-another-activity-in-android-application/


0

bạn có thể sử dụng mã này trong hoạt động đầu tiên của mình :

 Intent i = new Intent(Context, your second activity.class);
        i.putExtra("key_value", "your object");
        startActivity(i);

và nhận đối tượng trong hoạt động thứ hai :

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.