onActivityResult() 是一个标准的 Android 函数,在子 Activity 关闭后调用。但是,它似乎并没有完全关闭。
在我的子活动完成后,在父项中调用 onActivityResult()。在这一点上,我的动作是在父创建的新类中注入上下文(通过提供者,非辅助),使用孩子刚刚返回给我的可打包信息作为新的 @Assisted 参数班级。
然而,尽管对子进程调用了 finish(),但注入的上下文不是父进程——而是子进程!这会杀死程序。
我该如何解决这个问题?
这是一些代码,可以让您了解我在做什么。
在父级中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_NEW_EXERCISE)
{
if (resultCode == RESULT_OK)
{
EntityExercise exercise = (EntityExercise)data.getExtras().get("exercise");
addNewRoutineExerciseDetail(exercise);
//Toast.makeText(this, exercise.getName(), Toast.LENGTH_LONG).show();
}
}
}
public RoutineExerciseDetail addNewRoutineExerciseDetail(EntityExercise exercise)
{
RoutineExerciseDetail detail = detailFactory.create(exercise);
detail.setOnClickRelativeLayoutListener(mEditParamsOnClickListener);
return detail;
}
在孩子身上:
View.OnClickListener mListenerReturnExercise = new View.OnClickListener()
{
@Override
public void onClick(View v) {
Intent resultIntent = new Intent();
resultIntent.putExtra("exercise", (EntityExercise)v.getTag()); //Assuming it's the tag
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
};
RoutineExerciseDetail的构造函数参数:
@Inject
public RoutineExerciseDetail(ActivityBaseRoboOrm<DatabaseHelper> context, List<RoutineExerciseDetail> list,
@AddEditExercise TableLayout layout, @Assisted EntityExercise exercise)