2010-12-11 50 views
2

J'écris une application Android. Une des activités est une ListActivity, donc quand la personne sélectionne un item dans la liste je voudrais que la valeur textuelle de cet item soit stockée dans le Intent/Bundle pour que l'activité suivante connaisse cette valeur. Mon code ressemble à ceci:Pourquoi mon activité Android se ferme-t-elle lorsque j'essaie d'accéder aux informations que je mets dans le paquet?

lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View view, 
      int position, long id) { 

      Intent intent = new Intent(view.getContext(), FavoriteEditFromDest.class); 
      intent.putExtra("com.example.myapp.Name", ((TextView) view).getText()); 

      startActivity(intent); 
     } 
     }); 
    }

La méthode onCreate pour l'activité qui doit être commencé ressemble à ceci:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.favorite_dest_edit); 

      // nameB is a global string variable defined above. 
     nameB = savedInstanceState.getString("com.example.myapp.Name"); 
    }

Lorsque je clique sur un élément de la liste dans le ListActivity, il commence pour exécuter le code onCreate, mais quand il arrive à la ligne qui essaie de récupérer la valeur de la chaîne, j'obtiens un dialogue de fermeture de force.

Je n'ai pas beaucoup d'expérience en transmettant des informations avec un Bundle, donc j'apprécierais toute aide!

Répondre

4
nameB = savedInstanceState.getString("com.example.myapp.Name"); 

doit être remplacé par

Bundle bundle = getIntent().getExtras(); 
nameB = bundle.getString("com.example.myapp.Name"); 

essayer cela et voir si ça aide.

+0

Cela semble prometteur, je vais l'essayer et vous faire savoir comment ça se passe. Merci d'avance! – jbranchaud

1

Utilisez adb logcat, DDMS ou la perspective DDMS dans Eclipse pour examiner votre trace de pile et voir l'exception qui a déclenché votre «fermeture forcée».

Dans ce cas, je pense que vous constaterez que ce que vous mettez dans le Bundle n'est pas un String, puisque getText() ne retourne pas String. Cependant, c'est juste une supposition - votre trace de pile devrait vous en dire plus.

0

Parmi les autres problèmes

intent.putExtra("com.example.myapp.Name", ((TextView) view).getText()); 

devrait être

intent.putExtra("com.example.myapp.Name", ((TextView) view).getText().toString()); 
+0

Parmi quels autres problèmes? – jbranchaud