美文网首页
onActivityResult--------回调式

onActivityResult--------回调式

作者: _Youngjim | 来源:发表于2018-09-13 16:49 被阅读0次

    其实就是用OnActivityResultManager来实现startActivityForResult和OnActivityResult的连接,用位于OnActivityResultManager里的监听监听OnActivityResult,然后抛出回调就是了

    public class OnActivityResultManager {
    
        private WeakReference<Activity> mActivity;
        private HashMap<Integer,OnActivityResultCallBack> mCallBackMap=new HashMap<>();
    
        public   OnActivityResultManager(Activity activity) {
            mActivity=new WeakReference<>(activity);
        }
        
    
        private Activity getActivity(){
            return mActivity.get();
        }
    
    
        public void onActivtyResult(int requestCode,int resultCode,Intent data){
            OnActivityResultCallBack callBack = mCallBackMap.remove(requestCode);
            callBack.onResultCallBack(requestCode,resultCode,data);
    
        }
    
    
        public void startActivityForResult(Intent intent,int requestCode,OnActivityResultCallBack callBack){
            mCallBackMap.put(requestCode,callBack);
            getActivity().startActivityForResult(intent,requestCode);
        }
    
    
        public  interface OnActivityResultCallBack{
            void onResultCallBack(int requestCode,int resultCode,Intent data);
        }
    
    }
    

    将监听放置在baseActivity里

    image.png

    使用

     tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                    onActivityResultManager.startActivityForResult(intent, 101, new OnActivityResultManager.OnActivityResultCallBack() {
                        @Override
                        public void onResultCallBack(int requestCode,int resultCode, Intent data) {
                            Log.e("requestCode101",requestCode+"'");
                            Log.e("resultCode101",resultCode+"");
                            if(data!=null){
                                String name = data.getStringExtra("name");
                                Log.e("data101",name);
                            }
                        }
                    });
                    onActivityResultManager.startActivityForResult(intent, 103, new OnActivityResultManager.OnActivityResultCallBack() {
                        @Override
                        public void onResultCallBack(int requestCode,int resultCode, Intent data) {
                            Log.e("requestCode103",requestCode+"'");
                            Log.e("resultCode103",resultCode+"");
                            if(data!=null){
                                String name = data.getStringExtra("name");
                                Log.e("data103",name);
                            }
                        }
                    });
                }
            });
    

    结果正常


    image.png

    (name也有,没截图出来)

    相关文章

      网友评论

          本文标题:onActivityResult--------回调式

          本文链接:https://www.haomeiwen.com/subject/iyhwgftx.html