Qu'est-ce que je fais de mal? J'ai regardé d'autres questions et pensé que je faisais exactement les mêmes choses, mais comme cela ne fonctionne pas pour moi, évidemment, je fais quelque chose de mal!Envoyer un paquet/des données à une autre classe ou à un autre écran
J'ai mon MainActivity.class
qui obtient des données JSON (coordonnées) d'une URL. Cette partie fonctionne. Je veux ensuite charger un MapView, appelé OverlayActivity.class
, et envoyer ces données à cette carte afin que je puisse le peupler avec des superpositions, etc. Je tire un nombre variable de points vers le bas et crée dynamiquement des boutons. Selon le bouton sur lequel vous cliquez, il envoie des données différentes. Voici le code pour cette boucle:
final LinearLayout layout = (LinearLayout) findViewById(R.id.menuLayout);
layout.removeAllViewsInLayout();
String itemName="";
int itemID=0;
for (int i = 0; i < dataSetsMap.size(); i++) {
itemID=i+1;
itemName=dataSetsMap.get(itemID);
Button b = new Button(this);
b.setText(itemName);
layout.addView(b);
// These need to be final to use them inside OnClickListener()
final String tempName=itemName;
final int tempID=itemID;
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent();
Bundle b = new Bundle();
i.setClass(myContext, OverlayActivity.class);
Log.i(TAG, "Setting extras: 1:"+tempName+" and 2:"+tempID);
b.putInt(tempName, tempID);
i.putExtras(b);
startActivity(i);
}
});
} // End for()
Alors, évidemment, je veux lire ces données de l'autre côté, en supposant que je te l'envoie correctement. Donc, pour le lire, je l'ai essayé quelques choses différentes:
//Method 1:
String test1=intent.getStringExtra("name");
String test2=intent.getStringExtra("id");
//Method 2:
String meh=getIntent().getExtras().getString("id").toString();
String bleh=getIntent().getExtras().getString("name");
//Method 3:
String value=savedInstanceState.getString("name");
String id=savedInstanceState.getString("id").toString();
//Method 4:
Bundle bundle = getIntent().getExtras();
String id=bundle.getString("id");
String value = getIntent().getExtras().getString("name");
je reçois un NullPointerException
en essayant d'utiliser l'une de ces méthodes. C'est la première fois que j'utilise ce type de méthodes, alors quelqu'un peut-il me diriger dans la bonne direction ou me dire où je me suis trompé?
Etes-vous sûr que 'l'intention 'n'est pas' nu ' ll' et/ou que 'getIntent()' ne retourne pas 'null'? D'où vient le NPE? – QuantumMechanic
Chaque ligne du 2ème bloc de code provoque une NPE lorsqu'elle est seule. Je l'ai eu en travaillant avec les réponses ci-dessous cependant. Merci. – eoinzy