2011-09-24 4 views
0

J'ai deux activités avec des listes.Comment passer la chaîne de 2 activités à une?

Un pour les tablettes et un pour les téléphones à densité régulière. Lorsqu'un élément de la liste est cliqué, il lance la même activité pour chaque activité avec liste.

Le problème est lorsqu'un élément est cliqué j'ai classe getter et setter qui obtient l'URL d'un élément particulier et il passe à l'activité de lancement comme celui-ci ...

private String URL = null; 
try{ 
     URL = com.fttech.AbstractFeedsActivity.feed_url; 

    } 
    catch(IllegalArgumentException e){ 
     e.printStackTrace(); 
     URL = com.fttech.ItemsActivity.url; 

    } 

Comme vous le voyez ce que je essayé de faire est d'essayer et attraper. Donc, si le premier n'est pas trouvé, le second sera récupéré.

Mais cela ne semble pas fonctionner.

Il renvoie la valeur null à chaque fois.

Pour ce que j'ai décrit quelle est la meilleure façon de mettre en œuvre cela? Est-ce que je suis logique? Ou y a-t-il un meilleur moyen.

Merci

Répondre

2

Essayez ceci,

 private String URL = null; 
    try{ 
      URL = com.fttech.AbstractFeedsActivity.feed_url; 
      if(TextUtils.isEmpty(URL)){ 
       URL = com.fttech.ItemsActivity.url; 
       // Pass this URL 
      } 
      else{ 
       // If its not empty then it will pass the first URL 
      } 
     } 
     catch(IllegalArgumentException e){ 
      e.printStackTrace(); 
     } 
0

Pas besoin de passer chaîne à 2 activités, si vous voulez simplement passer des chaînes à une ou autant d'activités que vous voulez, il suffit de les mettre en SharedPreferences ou déclarer une variable en classe statique et puis définissez/obtenez-le quand vous le voulez.

0

valeurs passage d'une activité à l'autre:

Intent intent = new Intent(context, CalledActivity.class); 
intent.putExtra(key, value); 
startActivity(intent); 

Si vous voulez des données de retour de l'activité appelée alors vous pouvez utiliser startActivityForResult() comme:

Intent intent = new Intent(context, CalledActivity.class); 
intent.putExtra(key, value); 
startActivityForResult(intent, requestCode); 

Dans l'activité appelée vous pouvez Définissez les données comme suit:

setResult(RESULT_OK, intent); 

Remarque: vous définissez ici la valeur dans intention et la transmettez à setResult().

En revenant en arrière pour appeler l'activité que vous pouvez obtenir des données en remplaçant:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode == RESULT_OK){ 
     //Get data from Intent "data" and do your task here.... 
    } 
} 

Remarque: Vous pouvez transmettre des valeurs primitives de type de données à travers intention et si vous voulez passer d'autres types, vous devez utiliser Bundle comme ce.

Bundle data = new Bundle(); 
data.putIntArray(key, value); 

// même façon que vous pouvez définir d'autres valeurs ....... // Maintenant, définissez cette valeur Bundle pour intention que vous faites pour le type primitif ....

Intent intent = new Intent(context, CalledActivity.class); 
intent.putExtra(data); 
startActivity(intent); 

Réception de données en activité:

// Pour les valeurs primitives:

DataType var_name = getIntent().getExtras().get(key); 

// Pour les valeurs Bundle:

Bundle var_name = getIntent().getExtras().getBundle(key); 
Questions connexes