Ich habe eine nützliche Bibliothek für die Implementierung von Android-Apps gelernt und werde daher die Verwendung zusammenfassen. ** Der Inhalt wird nacheinander aktualisiert **.
Die Entwicklungsumgebung ist wie folgt.
AndroidStudio ver2.2.2
FragmentArgs ver3.0.2
Wenn Sie versuchen, eine App zu implementieren, möchten Sie möglicherweise zum Zeitpunkt des Bildschirmübergangs ein Argument übergeben. Normalerweise wird es in Intent oder Bundle in Form von "Key: value" gespeichert und beim Übergang übergeben. ** Mit zunehmender Anzahl von Bildschirmen und Argumenten wird der Code länger und weniger lesbar **. ~~ Erstens, wenn die Menge an Code zunimmt, verschiedene Fehler usw. ~~
Fragment Args spielt in solchen Situationen eine aktive Rolle. ** FragmentArgs generiert automatisch eine Builder-Klasse aus Fragment. Vereinfachen Sie den Datenaustausch zwischen Fragmenten ** Werde es tun.
Für die Installationsmethode habe ich auf die [Git-Seite] verwiesen (https://github.com/sockeqwe/fragmentargs). Fügen Sie zum Installieren von FragmentArgs den folgenden Inhalt hinzu.
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> übergebenen Wert ab.
@Arg </ code>.
MyFragment myFragment = new MyFragmentBuilder(userName,age).build();
MyFragmentBuilder ist eine Klasse, die automatisch von FragmentArgs generiert wird. Es wird durch Ausführen von [Ausführen: App] generiert. Lassen Sie es uns also ohne Sorgen ausführen, auch wenn zuerst ein Fehler auftritt. Wenn kein Builder generiert wird, probieren Sie die in Tipps eingeführte Methode aus.
@Arg
String userName;
@Arg
int age;
Wenn Sie zu diesem Zeitpunkt @Arg (required = false) </ code> schreiben, können Sie dies zu einem optionalen Argument machen.
Sie können der Variablen auch
private </ code> hinzufügen. Vergessen Sie in diesem Fall nicht,
setter, getter </ code> vorzubereiten.
FragmentArgs.inject(this)
Der obige Code entspricht getArlements () </ code> und wird der Variablen mit
@Arg </ code> zugewiesen.
Zusammenfassend lautet der Code wie folgt.
@FragmentWithArgs </ code> vor dem Klassennamen einzufügen.
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
Die Beschreibung von Gradle ist möglicherweise falsch. Lassen Sie uns den Beschreibungsort und den Beschreibungsinhalt (ver usw.) erneut überprüfen.
Wenn die Beschreibung korrekt ist, kann dies durch Bereinigen des Projekts funktionieren. Für Android Studio: Sie können das Projekt bereinigen, indem Sie [Menü] → [Erstellen] → [Projekt bereinigen] auswählen.
Grundsätzlich werden Konstruktoren in der in Fragment deklarierten Reihenfolge generiert. Stellen Sie sicher, dass die Reihenfolge der Argumente im Builder mit der Reihenfolge der Variablen mit Arg </ code> im Fragment übereinstimmt.
Aus irgendeinem Grund ist mein Code nicht in der richtigen Reihenfolge erstellt, daher untersuche ich die Ursache. ..
Wenn Sie einen Wert an eine Klasse übergeben möchten, die DialogFragment erbt, schreiben Sie FragmentArgs.inject (this) </ code> in
OnCreateDialog () </ code>.
Dadurch wird die Aktivität übergeben. Ersetzen Sie daher
diesen </ code> nach Bedarf durch
getActivity () </ code>.
Recommended Posts