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

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很陌生,所以我确定有更好的方法可以做到这一点。任何帮助将非常感激。谢谢。

最佳答案

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

例如在数组类型2中,有OIL和BASIL的值不同。
您可以像访问R.array.OIL和R.array.BASIL一样进行访问。

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.OIL,而oil"BASIL",则id将变为R.array.BASIL

关于java - 响应startActivityForResult,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8676604/

10-09 00:12