Java 如何将数据从recyclerview传递到fragment
我按照youtube教程编写应用程序。这些代码是我的RecycleServiceAdapter的一部分Java 如何将数据从recyclerview传递到fragment,java,android,android-fragments,android-recyclerview,Java,Android,Android Fragments,Android Recyclerview,我按照youtube教程编写应用程序。这些代码是我的RecycleServiceAdapter的一部分 vHolder.item_contact.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView dialog_name_tv = (TextView) myDialog.findVie
vHolder.item_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView dialog_name_tv = (TextView) myDialog.findViewById(R.id.dialog_name_id);
TextView dialog_phone_tv = (TextView) myDialog.findViewById(R.id.dialog_phone_id);
ImageView dialog_contact_img = (ImageView) myDialog.findViewById(R.id.dialog_img);
TextView dialog_detail_tv = (TextView) myDialog.findViewById(R.id.dialog_detail);
dialog_name_tv.setText(mData.get(vHolder.getAdapterPosition()).getName());
dialog_phone_tv.setText(mData.get(vHolder.getAdapterPosition()).getPhone());
dialog_contact_img.setImageResource(mData.get(vHolder.getAdapterPosition()).getPhoto());
dialog_detail_tv.setText(mData.get(vHolder.getAdapterPosition()).getDetail());
Toast.makeText(mContext, "Test Click" + String.valueOf(vHolder.getAdapterPosition()), Toast.LENGTH_SHORT).show();
myDialog.show();
Button dialog_add_tv = (Button) myDialog.findViewById(R.id.dialog_add);
dialog_add_tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText dialog_quantity_tv = (EditText) myDialog.findViewById(R.id.dialog_quantity);
quantity = dialog_quantity_tv.getText().toString();
name = mData.get(vHolder.getAdapterPosition()).getName()+"\n";
price = mData.get(vHolder.getAdapterPosition()).getPhone();
Intent i = new
Intent(getActivity(),FragmentFav.class);
Bundle bundle = new Bundle();
bundle.putString("choices",choices);
bundle.putDouble("price",price);
i.putExtras(bundle);
startActivity(i);
}
});
}
});
return vHolder;
}
我想单击对话框添加电视按钮将数据传递到fragment.class
public class FragmentFav extends Fragment {
View v;
public FragmentFav() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.call_fragment, container, false);
return v;
}
}
我多次尝试使用intent仍然会发生错误。使用intent您无法打开片段,请使用下面的代码打开片段,并将数据传递给片段
// define a framelayout in activity xml
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container"></FrameLayout>
// then write below code on the click of dialog_add_tv button
Bundle bundle = new Bundle();
bundle.putString("choices",choices);
bundle.putDouble("price",price);
FragmentFav frgFav=new FragmentFav();
frgFav.setArguments(bundle);
FragmentTransaction fragmentTrasaction=getFragmentManager().beginTransaction();
fragmentTrasaction.add(R.id.fragment_container,frgFav,"frg");
fragmentTrasaction.commit();
// then get data in fragment like this
String choice=getArguments().getString("choices");
String price=getArguments().getString("price");
//在活动xml中定义框架布局
//然后在单击对话框添加电视按钮时编写以下代码
Bundle=新Bundle();
bundle.putString(“选项”,选项);
bundle.putDouble(“价格”,price);
FragmentFav frgFav=新的FragmentFav();
frgFav.setArguments(bundle);
FragmentTransaction FragmentTransaction=getFragmentManager().beginTransaction();
添加(R.id.fragment_容器,frgFav,“frg”);
fragmentTrasaction.commit();
//然后像这样获取片段中的数据
String choice=getArguments().getString(“选项”);
字符串price=getArguments().getString(“price”);
以下是您可以遵循并实施所需的步骤
步骤1:
在适配器和片段之间创建接口
步骤2:
在适配器中实现如下接口:
vHolder.item_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProfileItemClickListener.itemContact(v);
}
//aka通过接口传递整个视图
步骤3:
在接口中,类添加此方法
void itemContact(View mView);
步骤4:
在片段中实现接口:
- 在这里,您将获得一个覆盖方法并在那里执行您的操作 @凌驾 公共无效项目联系人(ImageView mProfileImageView){ 你的代码在这里 }
在视图之间传递数据时,您可以正确处理回调。您不能对要传递
片段FAV
的意图
调用startActivity
。您需要一个包含片段fav
的活动
,而您需要启动该活动。