編集:現在、android-actionbar の代わりにActionBarSherlockを使用することをお勧めします。新しいデバイスでネイティブの Android アクション バーを使用できるようにし、古いデバイスで完全な API 互換性を提供します。
元の答え:
mimic-native-api ブランチをお勧めします。これはより最新で、XML からアクションを定義できるなど、非常に便利な機能がいくつかあります。(大規模なプロジェクトで使用していますが、うまく機能しています。)
ただし、AbstractAction の独自の実装を作成することにより、マスター ブランチでこれを実行できるはずです。たとえば、「ResultAction」と呼ばれる IntentAction に類似した別のクラスを追加し、mContext.startActivity(mIntent) の代わりに mContext.startActivityForResult(mIntent) を使用するようにします。 )。また、監視したい requestCode を onActivityResult に保存する必要があります。
いくつかの完全にテストされていないサンプル コード:
public static class ResultAction extends ActionBar.AbstractAction {
private Context mContext;
private Intent mIntent;
private int mRequestCode;
// note: you could use this to start activities normally (with no result)
// by using a negative value for requestCode.
public ResultAction(Context context, Intent intent, int drawable, int requestCode) {
super(drawable);
mContext = context;
mIntent = intent;
mRequestCode = requestCode;
}
@Override
public void performAction(View view) {
try {
mContext.startActivityForResult(mIntent, mRequestCode);
} catch (ActivityNotFoundException e) {
Toast.makeText(mContext,
mContext.getText(R.string.actionbar_activity_not_found),
Toast.LENGTH_SHORT).show();
}
}
}
ここに記載されているように、結果コードを取得するには、アクティビティで onActivityResult をオーバーライドする必要があります。