Transfuse の称賛と親切な言葉に感謝します。
イベント マッピングが Transfuse から欠落しているように見えますが、@OnActivityResult
簡単に追加できました ( https://github.com/johncarl81/transfuse/issues/47 )。この機能を使用するには、現在の 0.2.3 スナップショットを使用する必要があります。これは、非スナップショットがリリースされるまで、maven central で使用できるはずです。
Transfuse は、注入されたエクストラを介してアクティビティの結果を処理しません。当面は、これを通常の Android の方法で処理する必要があるようです。良いニュースは、Transfuse がボタン クリックとインテント構築のマッピングに役立つことです。次に例を示します。
最初のアクティビティでインテントをトリガーするボタン リスナー:
@RegisterListener(R.id.resultonebutton)
public android.view.View.OnClickListener listener = new android.view.View.OnClickListener() {
@Override
public void onClick(android.view.View view) {
android.content.Intent intent = intentFactory.buildIntent(new ResultTwoActivityStrategy());
context.startActivityForResult(intent, REQUEST);
}
};
2 番目のアクティビティから結果を返すボタン リスナー:
@RegisterListener(R.id.resulttwobutton)
public android.view.View.OnClickListener listener = new android.view.View.OnClickListener() {
@Override
public void onClick(android.view.View view) {
Intent returnIntent = new Intent();
returnIntent.putExtra(ResultOne.RESULT_KEY, inputText.getText().toString());
activity.setResult(android.app.Activity.RESULT_OK, returnIntent);
activity.finish();
}
};
次に、元のアクティビティの OnActivityResult メソッド:
@OnActivityResult
public void result(int requestCode, int resultCode, android.content.Intent data) {
if (requestCode == REQUEST) {
if(resultCode == android.app.Activity.RESULT_OK){
String result=data.getStringExtra(RESULT_KEY);
Toast.makeText(context, result, SharedVariables.ONE_SECOND).show();
}
}
}
現在のアクティビティ、IntentFactory、およびすべてのウィジェットを注入できることを忘れないでください。
インテントにフラグを追加するには、インテントを構築して .addFlags() メソッドを呼び出すだけです。IntentFactory を使用している場合は、次のようになります。
Intent intent = intentFactory.buildIntent(new ResultTwoActivityStrategy());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent, REQUEST);
onNewIntent イベントも欠落しているようです。最近追加された他のイベントと一緒に、すぐに追加することを検討します。