我想使用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);
}
});
}
现在我想通过将此活动的意图发送到 GuestListActivity.class
的片段来发送 guestKey我已经尝试过Bundle但我无法发送数据。 TIA
答案 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传递。然后,您将能够获取所需片段中的数据。为了更好地理解,请参阅演示图像。
将数据发送到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","");
}