activity与fragment之间的数据交互

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

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值