我正在尝试使用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/