首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用android-actionBar进行startActivityForResult?

如何使用android-actionBar进行startActivityForResult?
EN

Stack Overflow用户
提问于 2011-06-27 16:58:45
回答 1查看 1.2K关注 0票数 2

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

代码语言:javascript
复制
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);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-28 01:58:14

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

原始答案:

我推荐mimic-native-api分支,它更新,并且有一些非常有用的特性,比如能够从XML定义操作。(我在一个大型项目中使用它,它工作得很好。)

但是,您应该能够通过创建自己的AbstractAction实现在主分支中执行此操作--例如,添加另一个类似于IntentAction的名为"ResultAction“的类,并让它使用mContext.startActivityForResult(mIntent)而不是mContext.startActivity(mIntent)。您还需要在onActivityResult中存储要监视的requestCode。

一些完全未经测试的示例代码:

代码语言:javascript
复制
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以获得结果代码,如文档中的here所示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6490580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档