Je voudrais savoir comment gérer l'intention entre les onglets. Par exemple, j'ai une activité d'onglet avec deux onglets. Le premier sur le contenu est une vue de texte. un autre est une vue de la carte. Lorsque je clique sur cette vue de texte, elle redirige vers l'onglet2. cela peut être facilement réalisé par les méthodes setCurrentTab (1) ou setCurrentTabByTag ("tab2"). Mais je veux transmettre des valeurs lat et longues à cette activité de carte pour faire tomber l'épingle. Quelle est la meilleure façon d'utiliser les intentions ou getter/setter dans Java? Que préfères-tu? si votre réponse est "Intents". Comment?Comment utiliser l'intention entre les onglets de Java/Android?
Répondre
Un problème intéressant. Je comprends que vous voulez passer au deuxième onglet sur un clic dans le premier onglet, mais aussi transmettre des données spéciales au second onglet qui dépend de l'action dans le premier onglet.
Je commence généralement vos vues dans les onglets avec une activité. Cependant, ceci est fait au moment où l'hôte de l'onglet est configuré. Cela signifie que les deux intentions sont celles de l'activité qui permet à l'utilisateur de choisir lat long et celle qui montre lat long sont ouvertes en même temps.
Par conséquent, vous ne pouvez pas ajouter les informations à l'intention utilisée pour initialiser l'hôte de l'onglet. Je n'aime pas la solution mais la seule chose qui me vient à l'esprit (en utilisant différentes activités pour les onglets) est l'utilisation d'un application personnalisé qui stocke une référence à un objet contenant les données dont vous avez besoin pour mettre à jour la vue languette. Vous devez étendre l'application avec une classe propre et ajouter cette classe dans votre manifeste, maintenant vous pouvez appeler getApplication dans le premier onglet, le transtyper dans votre classe d'application set lat et long juste avant d'appeler setCurrentTab. Dans le deuxième onglet, vous pouvez appeler à nouveau getApplication() et vous obtiendrez alors l'objet application qui est le même pour chaque activité à chaque moment de votre application en cours d'exécution. Vous l'avez ensuite renvoyé à votre objet d'application et récupérez la valeur lat et la valeur longue. Voir ce page dans les reflexions google sur la façon d'utiliser une classe d'application personnalisée.
Pour utiliser une classe d'application personnalisée ajouter ce qui suit à votre balise d'application dans votre manifeste:
<application
...
android:name=".somepackage.CustomAppClass"
Cela indiquera Android instancier la CustomAppClass que votre classe d'application au moment de votre application commence. Vous devez étendre l'application pour éviter les erreurs au démarrage.
Une autre solution mais pas celle que je préférerais est d'initialiser les vues vous-même et d'initialiser le tabhost avec des vues et non des activités. Avec une vue de carte dans l'un des onglets cela pourrait être très lourd en mémoire.
vous m'a beaucoup dérouté. J'utilise différentes activités pour les onglets. quand je clique sur une vue sur l'onglet1. il redirige vers cette activité de carte (deuxième onglet). La principale chose que je suis obtenir cette latitude et la longitude de tab1. cette valeur change dynamiquement. – Praveen
C'est le problème que vous ne pouvez pas utiliser dans ce cas parce que l'intention de démarrer l'activité de la carte est envoyée au moment de l'initialisation de l'onglet. cela signifie que vous ne pouvez pas y attacher de données plus tard. Vous devez avoir une variable globale accessible pour les deux activités qui contient les valeurs longues lat J'édite mon post, c'est encore assez compliqué mais peut-être pas plus déroutant. J'essaie de trouver un tutoriel pour travailler avec des classes d'application personnalisées. – Janusz
alors je veux utiliser les méthodes getter/setter. droite? – Praveen
Si vous voulez transmettre des valeurs entre les activités, je vous suggère de regarder
http://developer.android.com/reference/android/content/SharedPreferences.html
la meilleure façon d'obtenir des valeurs d'une itent à l'autre. Avec sharedPrefrences, il existe une seule instance de la classe pour l'ensemble de l'application, ce qui signifie que vous pouvez stocker des valeurs dans les fichiers, changer d'objet ou d'activité, puis rappeler les fichiers SharedPrefrence contenant les données. Le seul inconvénient est que vous devez passer des types primitifs (int, string, boolean) mais je suis sûr que vous trouverez des façons de contourner cela :).
Si vous faites l'intention que vous utilisez pour démarrer l'activité du deuxième onglet une intention globale.
Vous pouvez ensuite ajouter des suppléments à cette intention dans le onPause()
du premier onglet.Remarque: vous devez définir tous vos onglets dans des activités distinctes de votre tabhost TabActivity
car l'activité onPause()
de cette activité n'est jamais appelée.
Cela aussi aider de la réponse ci-dessus, si vous utilisez une variable globale enregistrée dans votre activité qui étend l'application, vous pouvez le configurer dans le onPause()
comme il est tiré avant l'activité est en marche, que vous trouverez peut-être un problème si la définition de cette ailleurs
Je ne vois pas le problème ici: Peut-être est un peu de hackish, mais le code suivant fonctionne pour moi:
public boolean onClick(View v) {
//get your data you wanna send.
//If it is an Object it would be good if it is Parcelable
Object o = getYourData();
// or Parcelable p = getYourData
Activity activity = getParent();
//I'm assuming were inside an Activity which is started by TabActivity
if (activity instanceof TabActivity){
TabActivity ta = (TabActivity)activity;
//now determine the Tab you wanna start
ta.getTabHost().setCurrentTabByTag("yourTag");
//or ta.getTabHost().setCurrentTab(yourID);
Activity current = ta.getCurrentActivity();
//check if the Activity is the one you wanna start
if (current instanceof YOUR_ACTIVITY_YOU_WANNA_START){
//Cast to your Activity
YOUR_ACTIVITY_YOU_WANNA_START yourActivity =
(YOUR_ACTIVITY_YOU_WANNA_START)current;
// you only need to put Data inside your Intent
Intent intent = new Intent();
intent.putExtra("EXTRA_DATA_TAG", o);
//your Activity must Override onNewIntent and make it public,
//or simply add another method
//with whatever You like as parameter
yourActivity.onNewIntent(intent);
return true;
}
}
return false;
}
cette façon, vous ne devez pas salir avec application , SharedPrefs ou autre trucs essesary mentionnés ici
- 1. Onglets jQuery-ui: interférence entre les onglets
- 2. Navigation entre les onglets TabHost
- 3. Copie de données entre les onglets
- 4. Basculer entre les onglets dans NERDTree
- 5. Onglets jQuery. Liaison entre les onglets à l'onglet
- 6. comment créer des onglets de commutation entre les pages
- 7. IE8 Partage de session entre les onglets et les fenêtres
- 8. Confirmation lors de la commutation entre les onglets
- 9. comment utiliser les onglets android dans la même activité
- 10. Différence entre les méthodes de commutation des onglets
- 11. Rédaction du contenu entre les onglets de Firefox
- 12. Maintien de l'état entre les onglets du navigateur en PHP
- 13. Comment empêcher dijit.layout.TabContainer de basculer entre les onglets, en fonction de l'état des données dans l'onglet?
- 14. Android - Comment partager un contrôle WebView entre différents onglets?
- 15. Oracle Form Builder: Commuter entre les onglets sous une forme
- 16. Partager l'affichage en arrière-plan entre les onglets d'un UITabBarController
- 17. Passage ArrayList <String> entre les onglets
- 18. Puis-je avoir les onglets ouverts depuis l'URL et toujours utiliser les onglets ajax
- 19. Comment faire pour que les onglets Telerik TabStrip persistent entre les demandes de page?
- 20. Android: Pourquoi ne pas utiliser les activités dans les onglets?
- 21. Utiliser les onglets jQuery comme navigateur de site?
- 22. Différence entre le contrôle Multiview et les onglets AjaxToolkit
- 23. date avec onglets espace entre les deux dans unix
- 24. Comment communiquez-vous entre 2 onglets/fenêtres du navigateur?
- 25. Comment déplacer les onglets de fichier IntelliJ?
- 26. Comment puis-je détecter l'orientation du périphérique entre les onglets et les vues?
- 27. Crystal Reports Croisement des onglets entre eux
- 28. Comment arrêter la disparition des erreurs de validation WPF lors du déplacement entre les onglets?
- 29. iPhone: Comment synchroniser les données entre deux onglets avec une action de bouton
- 30. comment utiliser les onglets sémantiques de jquery sans la fonctionnalité de commutation div?
Comment sont définis vos onglets? Sont-ils des vues intégrées ou des activités différentes? – Pentium10
J'ai utilisé différentes activités. – Praveen