首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应startActivityForResult

响应startActivityForResult
EN

Stack Overflow用户
提问于 2011-12-30 13:53:36
回答 2查看 532关注 0票数 2

我正在尝试使用startActivityForResult响应活动的结果。我得到了预期的结果,但不确定如何回应这个结果。我想做的是根据结果调用不同的ArrayList (这是一个资源)。

代码语言:javascript
复制
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle d = data.getExtras();
        String oil = d.getString("oil");
        Resources res = getResources();
        String[] oil_info = res.getStringArray(R.array.OIL);
        ...
    } 
}

我希望R.array.OIL根据结果进行更改。例如,如果oil = 'BASIL‘将R.array.OIL改为R.array.BASIL,我想过做一个哈希图,但是想不出如何把R.array.OIL放到哈希图中,因为你不能把原语放在哈希图中。我对android和java还很陌生,所以我相信有更好的方法可以做到这一点。任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-30 14:37:24

使用getIdentifier()满足您的需求,如下所示。

例如,在数组类型2中,项作为具有不同值的油和罗勒存在。你可以像R.array.OIL和R.array.BASIL一样访问。

代码语言:javascript
复制
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle d = data.getExtras();
        String oil = d.getString("oil");
        Resources res = getResources();
        int id = res.getIdentifier(oil, "array", getPackageName());
        String[] oil_info = res.getStringArray(id);
        ...
    } 
}

在上面的代码中,如果字符串oil"OIL",则id将变为R.array.OILoil"BASIL",则id将变为R.array.BASIL

票数 1
EN

Stack Overflow用户

发布于 2011-12-30 14:25:49

您正在尝试的实际上是永久存储的尝试。这对于"Res“文件夹或"R.smthing.smthing”数据是不允许的。使用shared preferences进行原语存储。看看是否可以通过sharedPreferences保存数组,或者使用序列化或SQLite数据库。

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

https://stackoverflow.com/questions/8676604

复制
相关文章

相似问题

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