使用Inent将数据从Activity1发送到Activity2的片段

时间:2018-01-22 20:20:38

标签: android android-fragments android-fragmentactivity

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

enter image description here

所以我从这个

中的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);

                    }
                });

            }

现在我想通过将此活动的意图发送到 GuestListActivity.class

的片段来发送 guestKey

我已经尝试过Bundle但我无法发送数据。 TIA

4 个答案:

答案 0 :(得分:3)

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

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

在活动2中抓住它

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

现在发送到活动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);
}

答案 1 :(得分:2)

  

将数据从活动发送到活动并以片段形式接收getActivity()。getIntent(),然后在接收活动数据时执行。

答案 2 :(得分:0)

此处,Activity2的任何片段都是在此活动的onCreate()之后创建的。

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

方法1:

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

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");

方法2:

声明静态变量。在onClick中分配值然后访问并使用片段类

中的该值

答案 3 :(得分:0)

您必须将数据发送到GuestListActivity并在GuestListActivity中检索数据。之后,当您执行片段跟踪或添加片段时,将数据通过bundle传递。然后,您将能够获取所需片段中的数据。为了更好地理解,请参阅演示图像。

enter image description here

将数据发送到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","");
}