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