关于动态fragment与Activity通信的问题

touchstone 发布于 2014/10/14 09:24
阅读 2K+
收藏 0
要做一个手机端查看摄像头画面的app

我的fragment都是动态的,没有id或者tag之类的可供MainActivity通过findFragmentByXX获取


现在我想做的就是在Surfaceview上显示画面。
我已经在fragment的布局类中写了一个接口和方法,供MainActivity来实现这个接口来与fragment通信。
但是我怎么能在MainActivity里获取到Surfaceview?以便我在MainActivity中给他的SurfaceHolder添加画面的相关东西(比如bitmap流)。
或者我在MainActivity里面怎么能把画面的东西(比如bitmap流)回传给fragment的布局类,在fragment的布局类里操作SurfaceHolder?

不知道我表达明白没有?
希望能有高人指点一下,多谢多谢


我的Fragment.java里的代码如下:

public class Fragment4 extends Fragment {
        SurfaceView sfvOCam1;
        SurfaceHolder sfholder1;
        static int flag;
        SurfaceView sfvOCam2;
        SurfaceView sfvOCam3;
        SurfaceView sfvOCam4;

        private Fragment4CallBack f4CallBack;
        public interface Fragment4CallBack{
                public void sendView(SurfaceView surfaceView);
        }
        
        
        @Override
        public void onAttach(Activity activity) {
                // TODO Auto-generated method stub
                super.onAttach(activity);
                Log.e("Fragmetn4--Attach","Fragmetn4--Attach");
                f4CallBack = (Fragment4CallBack)activity;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                View view = inflater.inflate(R.layout.ofragment4, null);
        
                sfvOCam1 = (SurfaceView) view.findViewById(R.id.sfvOCam1);
                sfvOCam1.setOnClickListener(new BTNListener());
                sfvOCam2 = (SurfaceView) view.findViewById(R.id.sfvOCam2);
                sfvOCam2.setOnClickListener(new BTNListener());
                sfvOCam3 = (SurfaceView) view.findViewById(R.id.sfvOCam3);
                sfvOCam3.setOnClickListener(new BTNListener());
                sfvOCam4 = (SurfaceView) view.findViewById(R.id.sfvOCam4);
                sfvOCam4.setOnClickListener(new BTNListener());
                return view;
        }

        class BTNListener implements OnClickListener {

                @Override
                public void onClick(View v) {
                        // TODO Auto-generated method stub
                        switch (v.getId()) {
                        case R.id.sfvOCam1: {
                                Log.e("cam1", "cam1");
                                f4CallBack.sendView(sfvOCam1);
                                // if(flag == 0){
                                //((MainActivity) getActivity()).showAlertDialog();
                                
                                // }
                                break;
                        }
                        case R.id.sfvOCam2: {
                                Log.e("cam2", "cam2");
                                break;
                        }
                        case R.id.sfvOCam3: {
                                Log.e("cam3", "cam3");
                                break;
                        }
                        case R.id.sfvOCam4: {
                                Log.e("cam4", "cam4");
                                break;
                        }
                        }
                }

        }

}




加载中
0
时间不是我
时间不是我
帮顶一下,也同样想知道
touchstone
touchstone
额。。。
0
touchstone
touchstone

我这样解决的。。

我不是已经在Fragment类里用sendView()方法把Surfaceview发出去了吗(在48行)

然后我在MainActivity里面声明一个Surfaceview,在sendView()方法里来接收。

接收到之后,就可以“为所欲为”了

0
touchstone
touchstone
有的网友说利用广播,也行。
返回顶部
顶部