在我的第一个片段中,我有一个监听器,它会监听点击,当发生点击时,我想打开另一个片段并将数据传递给它。 我想知道如何在两个片段之间传递数据这是我到目前为止所拥有的。
这就是我在第一个片段中的内容
**Bundle b = getIntent().getExtras();
if(b != null)
value = b.getInt("key");
if (getIntent().getIntExtra("Key", 0) != 0) {
}**
这是我在第二个片段中的内容
touchImageView.setScrollX(290);
touchImageView.setScrollY(130);
答案 0 :(得分:0)
首先创建新的侦听器接口:
public interface YourCustomListener {
void onItemClick(int position, int ID);
}
现在将其添加到您的第一个片段:
YourCustomListener mListener;
你的片段onclick方法:
mListener.onItemClick(position,"YOUR ID");
在第一个片段中添加此方法:
@Override
public void onAttach(Context con) {
super.onAttach(con);
try {
mListener= (YourCustomListener ) con;
} catch (ClassCastException e) {
e.printStackTrace();
}
}
@Override
public void onDetach() {
mListener=null;
super.onDetach();
}
在Activity类中实现接口。在派生方法中:
@Override
public void onItemClick(int position,int ID) {
fragment2 =new SecondFragment();
Bundle arg= new Bundle();
arg.putInt("ID",ID);
arg.putString("title","ANY TITLE");
fragment2.setArguments(arg);
if (fragment2 != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_left_enter,R.anim.slide_left_exit,R.anim.slide_left_enter,R.anim.slide_left_exit);
fragmentTransaction.replace(R.id.container_body, fragment2,"PROF");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
getSupportActionBar().setLogo(null);
}
}
现在在你的第二个片段上,在创建方法中使用此:
Bundle pb=getArguments();
h=pb.getInt("ID");
title=pb.getString("title");
现在您拥有int h的值和String Title。您可以根据需要传递数据。
答案 1 :(得分:0)
在fragment_1中
Bundle i = new Bundle();
i.putString("name", "Emmanuel");
Fragment_1 frag = new Fragment_1();
frag.setArguments(i);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame
, new Fragment_2())
.commit();
获取fragment_2中的数据
Intent intent = getActivity().getIntent();
if (intent.getExtras() != null) {
String name =intent.getStringExtra("name");
}
或者您可以使用界面来完成。 Basic Communication between two fragments
答案 2 :(得分:0)
意图用于活动,而不是用于片段。因此,您无法通过调用“startActivity()”来启动片段。
您应该使用FragmentManager来管理您的碎片。
SecondFragment secondFragment = new SecondFragment(classificationGroup);
getActivity().getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, secondFragment).commit();