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

2018-09-13  本文已影响0人  _Youngjim

其实就是用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也有,没截图出来)

上一篇下一篇

猜你喜欢

热点阅读