getStringArrayListExtra给我一个空值,但我有值

时间:2014-04-15 14:31:25

标签: java android json android-asynctask

我有一个具有值的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);
}

所有值都正确添加,但是当我在广播上收到它时我收到一个null,但是“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[];

3 个答案:

答案 0 :(得分:3)

添加值时,请使用putStringArrayListExtra代替putExtra

broadcastIntent.putStringArrayListExtra("puntos", resultID);
broadcastIntent.putStringArrayListExtra("nombrePuntos", resultPoints); 

答案 1 :(得分:0)

而不是在广播接收器中使用getExtra使用getSerializableExtra("VALUE")

答案 2 :(得分:0)

使用intent.getStringArrayListExtra("puntos");更改intent.getStringArrayExtra("puntos");

如果您查看documentationgetStringArrayListExtra会返回ArrayList<String>,但您似乎期待String[]