我正在尝试使用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还很陌生,所以我相信有更好的方法可以做到这一点。任何帮助都将不胜感激。谢谢。
发布于 2011-12-30 14:37:24
使用getIdentifier()满足您的需求,如下所示。
例如,在数组类型2中,项作为具有不同值的油和罗勒存在。你可以像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
发布于 2011-12-30 14:25:49
您正在尝试的实际上是永久存储的尝试。这对于"Res“文件夹或"R.smthing.smthing”数据是不允许的。使用shared preferences进行原语存储。看看是否可以通过sharedPreferences保存数组,或者使用序列化或SQLite数据库。
https://stackoverflow.com/questions/8676604
复制相似问题