【发布时间】:2014-04-15 14:31:24
【问题描述】:
我有一个有值的 getExtra,但是当我尝试将它放在一个 ArrayList 上时,我收到一个空值,我不知道为什么。我把代码放在下面,我解释一下。
在 mainActivity 的 onCreate 方法上,我有两行: rp = new RequestPoints(this, url, "admin", "admin"); rp.execute(""); 调用另一个类来连接数据库并获得请求的结果。
在 RequestPoints 类上,我有执行以下步骤的 onPostExecute 方法:
@Override
protected void onPostExecute(JSONObject jsonResponse)
{
super.onPostExecute(jsonResponse);
ArrayList<String> valuesID = new ArrayList<String>();
ArrayList<String> valuesNames = new ArrayList<String>();
//Procesamos los resultados
try
{
if(jsonResponse!=null)
{
JSONArray jsonMainNode =jsonResponse.optJSONArray("tiposPto");
int lengthJsonArr =jsonMainNode.length();
for(int i=0; i<lengthJsonArr; i++)
{
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
valuesID.add(jsonChildNode.optString("IdTipoPto"));
valuesNames.add(jsonChildNode.optString("Nombre"));
}
}
}
catch (JSONException e)
{
}
String resultID[] = valuesID.toArray(new String[valuesID.size()]);
String resultPoints[] = valuesNames.toArray(new String[valuesNames.size()]);
broadcastIntent = new Intent();
broadcastIntent.putExtra("puntos", resultID);
broadcastIntent.putExtra("nombrePuntos", resultPoints);
broadcastIntent.setAction(ACTION_REQUEST_POINTS);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
_ctx.sendBroadcast(broadcastIntent);
}
所有值都正确添加,但是当我在广播中收到它们时,我收到一个空值,但是“resultID”和“resultPoints”数组有值,我不明白为什么会发生这种情况。
public class ReceptorBroadcast extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent intent)
{
if(RequestPoints.ACTION_REQUEST_POINTS.equals(intent.getAction()))
{
pointId = intent.getStringArrayListExtra("puntos");
pointNames = intent.getStringArrayListExtra("nombrePuntos");
}
}
}
在最后一个 pointId 和 pointNames 中,我都收到了一个空值。有人可以帮我解决这个问题吗?
PD:我这样声明两个变量:
Point points[];
Paths paths[];
【问题讨论】:
标签: java android json android-asynctask