有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对startActivityForResult的响应

我正在尝试使用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阵列。根据结果更换机油。i、 e.如果oil='BASIL'改变R.数组。加油到右排。罗勒。我想制作一个hashmap,但不知道如何放置R.array。在hashmap中添加油,因为不能在hashmap中添加原语。我对安卓和java还很陌生,所以我相信有更好的方法可以做到这一点。任何帮助都将不胜感激。谢谢


共 (2) 个答案

  1. # 1 楼答案

    你所尝试的实际上是一种永久存储的尝试。这不允许用于“Res”文件夹或“R.smthing.smthing”数据。 使用shared preferences进行基本存储。 查看是否可以通过sharedPreferences保存数组,或者使用序列化或SQLite数据库

  2. # 2 楼答案

    使用getIdentifier()满足以下要求

    例如,在数组类型2中,有不同值的油和罗勒。 你可以像R.array一样访问。油和R.阵列。罗勒

    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