编辑:我目前推荐使用ActionBarSherlock而不是 android-actionbar。它允许在较新的设备上使用原生 Android 操作栏,并在较旧的设备上提供完整的 API 兼容性。
原答案:
我会推荐mimic-native-api 分支,它是最新的并且具有一些非常有用的特性,例如能够从XML 定义动作。(我在一个大型项目中使用它,它工作得很好。)
但是,您应该能够通过创建自己的 AbstractAction 实现在主分支中执行此操作 - 例如添加另一个类似于 IntentAction 的类,称为“ResultAction”,并让它使用 mContext.startActivityForResult(mIntent) 而不是 mContext.startActivity(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 以获取结果代码,如此处所述。