Редактировать: В настоящее время я рекомендую использовать ActionBarSherlock вместо android-actionbar.Он позволяет использовать встроенную панель действий Android на новых устройствах и обеспечивает полную совместимость API со старыми.
Оригинальный ответ:
Я бы порекомендовал имитировать-native-api ветка, она более свежая и имеет некоторые очень полезные функции, такие как возможность определять действия из XML.(Я использую его в большом проекте, и он работает великолепно.)
Однако вы должны быть в состоянии сделать это в основной ветке, создав собственную реализацию AbstractAction - например, добавьте другой класс, похожий наIntentAction вызвало «ResultAction» и заставило его использовать mContext.startActivityForResult (mIntent) вместо mContext.startActivity (mIntent).Вам также необходимо сохранить код запроса, который вы хотите отслеживать, в своем 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 в своей деятельности, чтобы получить код результата, как описано здесь .