J'ai appris une bibliothèque utile pour mettre en œuvre des applications Android, je vais donc résumer comment l'utiliser. ** Le contenu sera mis à jour séquentiellement **.
L'environnement de développement est le suivant.
AndroidStudio ver2.2.2
FragmentArgs ver3.0.2
Lorsque vous essayez d'implémenter une application, vous souhaiterez peut-être transmettre un argument au moment de la transition d'écran. Normalement, il est stocké dans Intent ou Bundle sous la forme "Key: value" et transmis lors de la transition. ** À mesure que le nombre d'écrans et d'arguments augmente, le code devient plus long et moins lisible **. ~~ En premier lieu, lorsque la quantité de code augmente, diverses erreurs etc ... ~~
Fragment Args joue un rôle actif dans de telles situations. ** FragmentArgs génère automatiquement une classe de générateur à partir de Fragment, Simplifiez l'échange de données entre les fragments ** Le fera.
Pour la méthode d'installation, je me suis référé à la page git. Pour installer FragmentArgs, ajoutez le contenu suivant.
build.gradle(Project)
dependencies{
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'  
}
allprojects {
    repositories {
        maven {  url "https://oss.sonatype.org/content/repositories/snapshots/"  }
    }
}
build.gradle(app)
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
    compile 'com.hannesdorfmann.fragmentargs:annotation:3.0.2'
    compile 'com.hannesdorfmann.fragmentargs:bundler-parceler:3.0.2'
    apt 'com.hannesdorfmann.fragmentargs:processor:3.0.2'
}
 FragmentArgs.inject (this) </ code>. @Arg </ code>.   MyFragment myFragment = new MyFragmentBuilder(userName,age).build();
MyFragmentBuilder est une classe générée automatiquement par FragmentArgs. Il est généré en faisant [Run: app], alors exécutons-le sans nous soucier d'une erreur au début. Si ** builder n'est pas généré, essayez la méthode ** introduite dans Astuces.
  @Arg
	String userName;
    @Arg
	int age;
À ce stade, si vous écrivez  @Arg (required = false) </ code>, vous pouvez en faire un argument facultatif.
Vous pouvez également ajouter  private </ code> à la variable. Dans ce cas, n'oubliez pas de préparer  setter, getter </ code>.
FragmentArgs.inject(this)
Le code ci-dessus correspond à  getArgments () </ code> et est affecté à la variable avec  @Arg </ code>.
En résumé, le code est le suivant.
 @FragmentWithArgs </ code> avant le nom de la classe.myFragment.java
@FragmentWithArgs
public class myFragment extends Fragment {
    @Arg
    String userName;
    @Arg
    int age;
    public myFragment() {
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FragmentArgs.inject(this);
    }
Tips
La description de Gradle est peut-être incorrecte. Vérifions à nouveau l'emplacement de la description et le contenu de la description (ver, etc.).
Si la description est correcte, cela peut fonctionner en nettoyant le projet. Pour Android Studio: Vous pouvez nettoyer le projet en sélectionnant [Menu] → [construire] → [nettoyer le projet].
Fondamentalement, les constructeurs sont générés dans l'ordre déclaré dans Fragment. Assurez-vous que l'ordre des arguments dans le générateur correspond à l'ordre des variables avec  Arg </ code> dans le fragment.
Pour une raison quelconque, mon code est construit dans le désordre donc j'en recherche la cause. ..
Si vous souhaitez transmettre une valeur à une classe qui hérite de DialogFragment, écrivez  FragmentArgs.inject (this) </ code> dans  OnCreateDialog () </ code>.
Cela passe l'activité, alors remplacez  this </ code> par  getActivity () </ code> si nécessaire.
Recommended Posts