gpt4 book ai didi

android - 如何使用 android-actionBar 启动 ActivityForResult?

转载 作者:搜寻专家 更新时间:2023-11-01 09:13:27 25 4
gpt4 key购买 nike

我正在使用 android-actionbar (https://github.com/johannilsson/android-actionbar) 在我的应用程序中创建 actionbar。为了添加一个按钮,(一个 Action )我使用这个代码:

Intent myIntent = new Intent(this,SelectionCamera.class);
myIntent.putExtra("ledp",(Parcelable)Dp);
myIntent.putExtra("cam",this.numCam );
IntentAction actionCam = new IntentAction(this,
myIntent,
R.drawable.ic_camera
);
actionBar.addAction(actionCam);

这工作得很好,但我需要启动 Activity 并从中获取结果 (startActivityForResult())。使用 mimic-native-api 分支似乎很容易,但我不想更改我的 actionBar 版本。有什么解决办法吗?

最佳答案

编辑:我目前建议使用 ActionBarSherlock而不是 android-actionbar。它允许在新设备上使用原生 Android 操作栏,并在旧设备上提供完整的 API 兼容性。


原始答案:

我会推荐 mimic-native-api 分支,它是最新的并且有一些非常有用的特性,例如能够从 XML 定义操作。 (我在一个大型项目中使用它,并且运行良好。)

但是,您应该能够通过创建自己的 AbstractAction 实现在 master 分支中执行此操作——例如添加另一个类似于 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();
}
}
}

您需要在您的 Activity 中重写 onActivityResult 以获得结果代码,如记录 here .

关于android - 如何使用 android-actionBar 启动 ActivityForResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com