onActivityResult() は、子アクティビティが閉じた後に呼び出される標準の Android 関数です。ただし、完全には閉まらないようです。
子アクティビティが終了すると、親で 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)