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也有,没截图出来)