使用 Inent 将数据从 Activity 1 发送到 Activity 2 的片段

Send data from Activity1 to a fragment of Activity2 by using Inent

我想使用 Intent 将字符串从 Activity1 的 recyclerView 发送到 Activity2 的片段。为了更好地理解,这里是演示图像

所以我像这样从 recyclerView 中获取密钥

    @Override
            protected void populateViewHolder(EventsViewHolder viewHolder, EventDetails model, int position) {

                viewHolder.setEventDate(model.getDate());
                viewHolder.setEventIcon(getApplicationContext(),model.getIcon());
                viewHolder.setEventTitle(model.getTitle());
                viewHolder.setEventDescription(model.getDescription());
                viewHolder.setEventTotalGuest(model.getTotal_guests());

                 String guest_key = getRef(position).getKey();

                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

                        Intent guestListIntent = new Intent(MainActivity.this, GuestListActivity.class);
                        startActivity(guestListIntent);
                        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

                    }
                });

            }

现在我想通过使用此 activity 的意图将 guestKey 发送到 GuestListActivity.class[=25 的片段=]

我试过捆绑包,但我无法发送数据。 TIA

首先,将数据从activity1发送到activity2

Intent guestListIntent = new Intent(MainActivity.this, GuestListActivity.class);
guestListIntent.putExtra("guest_key",guest_key)
startActivity(guestListIntent);

在 Activity 2

中捕获它
    String guest_key = "";
    Bundle bundle = getIntent().getExtras();
    if(bundle != null){
        guest_key = bundle.getString("guest_key","");
    }

现在发送到 Activity 2

的片段
    Bundle bundle = new Bundle();
    bundle.putString("guest_key", guest_key);
    NewFragment newFragment = new NewFragment();
    newFragment.setArguments(bundle);

片段捕捉onCreateView

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    String guest_key = getArguments().getString("guest_key","");

    return inflater.inflate(R.layout.fragment_item_three, container, false);
}

在这里,Activity2 的任何片段都在这个 activity 的 onCreate() 之后创建。

我建议您使用两种方法中的任何一种在 Activity2 的片段中接收数据。

方法一:

使用 Bundle with intent 发送数据并在 Activity2 中接收数据,然后在转换片段时设置为参数。

Bundle bundle = new Bundle();
bundle.putString("YOUR_KEY", "KEY_VALUE");
guestListIntent.putExtras(bundle);
startActivity(guestListIntent);

在 Activity2 中接收此数据,

Bundle extras = getIntent().getExtras();

在片段转换时设置数据,

Fragment frag = new YOUR_FRAGMENT();
frag.setArguments(extras);

在Fragment中接收数据,

String value=  getArguments().getString("YOUR_KEY");

方法二:

声明静态变量。在 onClick 中赋值,然后从片段 class

访问并使用该值

您必须将数据发送到 GuestListActivity 并在 GuestListActivity 中检索数据。之后,当您进行片段跟踪或添加片段时,通过 bundle 传递数据。然后你就可以得到你想要的片段中的数据了。为了更好地理解,请参阅演示图像。

发送数据到GuestListActivity

@Override
protected void populateViewHolder(EventsViewHolder viewHolder, EventDetails model, int position) {

    // other code of view holder

    viewHolder.mView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent guestListIntent = new Intent(MainActivity.this, GuestListActivity.class);
            guestListIntent.putExtra("guest_key",guest_key)
            startActivity(guestListIntent);
            overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
            }
    }
}

检索GuestListActivity

中的数据
@Override
protected void onCreate(Bundle savedInstanceState) {
    String guest_key = "";
    Bundle bundle = getIntent().getExtras();
    if(bundle != null){
        guest_key = bundle.getString("guest_key","");
    }
}

将数据发送到您的片段

Bundle bundle = new Bundle();
bundle.putString("guest_key", guest_key);
MyFragment myFragment = new MyFragment();
myFragment.setArguments(bundle);

在您的片段中检索数据

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    String guest_key = getArguments().getString("guest_key","");
}

send the data as u send from activity to activity and receive in fragment as getActivity().getIntent() and then do as you receive data in activity.