我正在尝试使用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。我想过制作一个hashmap但是无法弄清楚如何将R.array.OIL放入一个hashmap中,因为你不能将基元放在一个hashmap中。我是android和java的新手,所以我确信有更好的方法来做到这一点。任何帮助将非常感激。感谢。
答案 0 :(得分:1)
根据您的要求使用getIdentifier()
,如下所示。
e.g。在数组类型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
答案 1 :(得分:0)
您正在尝试的实际上是永久存储的尝试。 “Res”文件夹或“R.smthing.smthing”数据不允许这样做。
使用shared preferences
进行原始存储。
看看是否可以通过sharedPreferences
保存数组,否则使用序列化或SQLite数据库。