Java 对startActivityForResult的响应
我正在尝试使用startActivityForResult对活动的结果进行响应。我得到了预期的结果,但不确定如何回应结果。我想做的是根据结果调用不同的ArrayList(这是一个资源)Java 对startActivityForResult的响应,java,android,Java,Android,我正在尝试使用startActivityForResult对活动的结果进行响应。我得到了预期的结果,但不确定如何回应结果。我想做的是根据结果调用不同的ArrayList(这是一个资源) protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode
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。i、 e.如果
oil
='BASIL'将R.array.oil更改为R.array.BASIL。我曾考虑过制作一个hashmap,但由于无法在hashmap中放置原语,因此无法将R.array.OIL放入hashmap。我对android和java还很陌生,所以我相信有更好的方法来实现这一点。任何帮助都将不胜感激。谢谢。您尝试的实际上是永久存储。“Res”文件夹或“R.smthing.smthing”数据不允许这样做。
使用共享首选项
进行基本存储。
查看是否可以通过SharedReferences
保存数组,或者使用序列化或SQLite数据库。使用getIdentifier()
满足以下要求
e、 g.在数组类型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@NCAggie它是否为您工作,如果不工作,请在执行应用程序之前清理项目。@NCAggie如果您认为我的答案对您的问题是正确的,请标记它。这就是stackoverflow的工作原理。再见。。