activity给fragment传递数据比较简单
就在fragment中定义一个方法,在activity中调用
public void setMyData(Object o){
this.o=o;
}
在activity中调用mfragment.setMyData(myData);
fragment给activity传递数据
如果不只一个fragment需要给这个activity传递数据的话
可以定义一个全局接口和你需要的抽象方法
在activity中实现这些方法
在fragment中去调用
需要注意的是 要在每个需要传递数据的fragment的onAttch方法中实例化这个接口
1.
public class MainApp extends Application{
public interface OnFragmentListener {
public void onFragmentAction(int flag,SendEntity entity);
}
}
2.
public class SelectSendContentActivity extends FragmentActivity implements OnClickListener,OnFragmentListener{
private ViewPager m_vp;
private Frag_image frag_image;
private Frag_music frag_music;
private Frag_video frag_video;
//页面列表
private ArrayList<Fragment> fragmentList;
//标题列表
ArrayList<String> titleList = new ArrayList<String>();
//通过pagerTabStrip可以设置标题的属性
private PagerTabStrip pagerTabStrip;
private PagerTitleStrip pagerTitleStrip;
MainApp app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_send_content);
app=(MainApp) this.getApplication();
m_vp = (ViewPager)findViewById(R.id.viewpager);
pagerTabStrip=(PagerTabStrip) findViewById(R.id.pagertab);
//设置下划线的颜色
pagerTabStrip.setTabIndicatorColor(getResources().getColor(android.R.color.holo_green_dark));
//设置背景的颜色
pagerTabStrip.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_dark));
frag_image = new Frag_image();
frag_music=new Frag_music();
frag_video=new Frag_video();
fragmentList = new ArrayList<Fragment>();
fragmentList.add(frag_image);
fragmentList.add(frag_music);
fragmentList.add(frag_video);
titleList.add("图片");
titleList.add("音乐");
titleList.add("视频");
m_vp.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager()));
// m_vp.setOffscreenPageLimit(2);
}
// 实现接口方法
@Override
public void onFragmentAction(int flag,SendEntity entity) {
//实现通信的接口
switch (flag) {
case 1:
sendList.add(entity);
app.setSendList(sendList);
break;
case 2:
sendList.remove(entity.getSfID());
app.setSendList(sendList);
break;
default:
break;
}
}
}
}
3.
public class Frag_music extends Fragment implements OnItemClickListener {
private View mMusicView;
private OnFragmentListener mListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = getActivity().getLayoutInflater();
mMusicView = inflater.inflate(R.layout.fragment_music, (ViewGroup)getActivity().findViewById(R.id.viewpager), false);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup p = (ViewGroup) mMusicView.getParent();
if (p != null) {
p.removeAllViewsInLayout();
}
return mMusicView;
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try {
mListener = (OnFragmentListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnFragmentListener");
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
SendEntity entity=new SendEntity();
entity.setfBm(mList.get(arg2).getBm());
entity.setfName(mList.get(arg2).getTitle());
entity.setfDisplayName(mList.get(arg2).getDisplayName());
entity.setfSize(mList.get(arg2).getSize());
entity.setfPath(mList.get(arg2).getPath());
entity.setfType("MUSIC");
mListener.onFragmentAction(1,entity);
}
}