我有一个具有值的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[];
答案 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");
。
如果您查看documentation,getStringArrayListExtra
会返回ArrayList<String>
,但您似乎期待String[]
。