onActivityResult()は、子アクティビティが終了した後に呼び出される標準のAndroid関数です。しかし、それはずっと閉じているようではありません。onActivityResultで間違ったコンテキストを注入するRoboguice(1.1および1.2スナップショット)
子アクティビティが終了した後、onActivityResult()が親で呼び出されます。この時点で、私のアクションは、親が作成している新しいクラスにコンテキストを(プロバイダを介さずに)注入することです。子供がちょうど私に戻ってきたparcelable情報を使って、その新しい@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のコンストラクタのパラメータ:ActivityForResult方法で
@Inject
public RoutineExerciseDetail(ActivityBaseRoboOrm<DatabaseHelper> context, List<RoutineExerciseDetail> list,
@AddEditExercise TableLayout layout, @Assisted EntityExercise exercise)
全く問題ではないこと。これは文の注入の問題であり、if文のトリガーの問題ではありません。 – Guicer