gpt4 book ai didi

java - 读取数据的数组映射

转载 作者:行者123 更新时间:2023-11-30 04:10:59 26 4
gpt4 key购买 nike

在我的 Android 项目中,我试图将提交的表单数据的 Map 从我的主 Activity 类发送到扩展 asyncTask 的第二个类。

在我的主要 Activity 中,我有以下代码 fragment :

Map<String, String> formData = new HashMap<String, String>();
formData.put("name", formName.getText().toString());
formData.put("test", "TESTING");

//formData.get("name"); - this test works

Connection connection = new Connection();
connection.execute(formData);

这会设置我的数据映射,成功测试第一个元素并将表单数据发送到我的类,该类负责在单独的线程上处理该数据。

但是,在我的异步类中,使用以下代码段:

public class Connection extends AsyncTask<Map, Void, Void> {
@Override
protected Void doInBackground(Map... data) {
// TODO Auto-generated method stub
Log.i("TEST", "NEW THREAD FIRING !!!");
Log.d("DATA", data.get("name"));

return null;
}

}

我的第二个日志调用试图提取数组映射的名称元素,但我的“数据”对象未被识别为我传入的映射。

最佳答案

doInBackground() 方法接受一个 varargs范围。这意味着一次可以传入不止一种类型。

在这种情况下,可能传入了不止一张 map ,在这种情况下,实际上也只有一张 IS 传入了。(你知道这一点是因为你是通过 AsyncTask's execute 方法发起调用的)。注意到方法签名中的 ... 了吗?这意味着您可以传入多个 Map 对象。

Connection connection = new Connection();
connection.execute(formData1, formData2, formData3);

您可以像访问任何 array 对象一样访问其中的值,即使用索引器。

我相信如果您将代码更改为如下所示,它应该可以工作:

@Override
protected Void doInBackground(Map... data) {
// TODO Auto-generated method stub
Log.i("TEST", "NEW THREAD FIRING !!!");
Map myMap = data[0];
Log.d("DATA", myMap.get("name"));

return null;
}

关于java - 读取数据的数组映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com