Dans une application Android, je charge les données d'un Db dans un TableView
fichier Fragment
. Mais lorsque je recharge le, Fragment
il affiche les données précédentes. Puis-je repeupler le Fragment
avec les données actuelles au lieu des données précédentes?
android
android-fragments
Samantha Withanage
la source
la source
Réponses:
Je pense que vous souhaitez actualiser le contenu du fragment lors de la mise à jour de la base de données
Si tel est le cas, détachez le fragment et rattachez-le
Your_Fragment_TAG est le nom que vous avez donné à votre fragment lors de sa création
Ce code est pour la bibliothèque de support.
Si vous ne prenez pas en charge les anciens appareils, utilisez simplement getFragmentManager au lieu de getSupportFragmentManager
[ÉDITER]
Cette méthode nécessite que le fragment ait une balise.
Si vous ne l'avez pas, la méthode de @ Hammer est ce dont vous avez besoin.
la source
Cela rafraîchira le fragment actuel:
la source
Si vous n'avez pas la balise fragment, le code suivant fonctionne bien pour moi.
la source
getActivity()
dans mon activité. Dois-je utiliserActivity.this...
?vous pouvez actualiser votre fragment lorsqu'il est visible par l'utilisateur, ajoutez simplement ce code dans votre fragment, cela actualisera votre fragment lorsqu'il sera visible.
la source
Pour actualiser le fragment, la réponse acceptée ne fonctionnera pas sur Nougat et la version supérieure. Pour le faire fonctionner sur tous les systèmes d'exploitation, vous pouvez faire ce qui suit.
la source
Vous ne pouvez pas recharger le fragment lorsqu'il est attaché à une activité, où vous obtenez une
Fragment Already Added
exception " ".Le fragment doit donc d'abord être détaché de son activité, puis attaché. Tout peut être fait en utilisant l'API fluent sur une seule ligne:
Mise à jour: il s'agit d'intégrer les modifications apportées à l'API 26 et au-dessus:
Pour plus de description de la mise à jour, veuillez consulter https://stackoverflow.com/a/51327440/4514796
la source
cela ne fonctionnera que si vous utilisez
FragmentManager
pour initialiser le fragment. Si vous l'avez<fragment ... />
en XML, il ne l'appelleraonCreateView
plus. J'ai gaspillé mes 30 minutes pour comprendre cela.la source
Voici ce que j'ai fait et cela a fonctionné pour moi, j'utilise Firebase et lorsque l'utilisateur se connecte, je voulais d'abord actualiser le fragment actuel, vous devrez d'abord demander le contexte de l'activité car le fragment n'a pas de moyen d'obtenir le contexte à moins que vous ne le définissiez à partir de l'activité ou du contexte ici est le code que j'ai utilisé et travaillé en langage kotlin, je pense que vous pourriez utiliser le même en classe java
la source
Utilisez a
ContentProvider
et chargez vos données à l'aide d'un 'CursorLoader'. Avec cette architecture, vos données seront automatiquement rechargées lors des changements de base de données. Utilisez des frameworks tiers pour votreContentProvider
- vous ne voulez pas vraiment l'implémenter vous-même ...la source
J'ai eu le même problème mais aucun des éléments ci-dessus n'a fonctionné pour le mien. soit il y avait un problème de backstack (après le chargement lorsque l'utilisateur appuyait, il reviendrait au même fragment) ou il n'a pas appelé le
onCreaetView
enfin j'ai fait ceci:
le bon point est que vous n'avez pas non plus besoin de la balise ou de l'identifiant du fragment. si vous voulez recharger
la source
Utilisez la méthode onResume ... à la fois sur l'activité du fragment et sur l'activité contenant le fragment.
la source
GeneralInfo
c'est ma classe FragmentGeneralInfo.java
Je l'ai mis comme méthode dans la classe fragment:
la source
Par exemple avec TabLayout: implémentez simplement OnTabSelectedListener. Pour recharger la page, vous pouvez utiliser implémenter SwipeRefreshLayout.OnRefreshListener ie
public class YourFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
la méthode onRefresh () sera @Override depuis l'interface ie:
Voici la mise en page:
Code dans votre activité
TabLayout tabLayout = (TabLayout) findViewById (R.id.tablayout); tabLayout.setupWithViewPager (viewPager);
la source
Écrivez viewpagerAdapter.notifyDataSetChanged (); dans onResume () dans MainActivity. Bonne chance :)
la source
Le moyen le plus simple
créer une méthode statique publique contenant viewpager.setAdapter
rendre l'adaptateur et le viewpager statiques
appelez n'importe où, n'importe quelle activité, n'importe quel fragment.
la source