【问题标题】:getStringArrayListExtra give me a null value but I have values on itgetStringArrayListExtra 给我一个空值,但我有它的值
【发布时间】: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


    【解决方案1】:

    添加值时使用putStringArrayListExtra 而不是putExtra

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我用 "getStringArrayListExtra" ,对不起,我现在换个问题。
      • 不需要这样做..只需将您的广播接收器中的呼叫更改为我在上面的帖子中告诉您的那个。
      【解决方案3】:

      intent.getStringArrayListExtra("puntos"); 更改为intent.getStringArrayExtra("puntos");

      如果您查看 documentationgetStringArrayListExtra 会返回 ArrayList&lt;String&gt;,但您似乎期待的是 String[]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-24
        • 2019-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多