[JAVA] Zusammenfassung der Verwendung von FragmentArgs

Einführung

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.

Was ist Fragment Args?

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.

So installieren Sie Fragment Args

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'
}

Verwendung von FragmentArgs

Grober Verarbeitungsablauf

  1. (Aufrufer) Generieren Sie ein Übergangsziel mit der Builder-Klasse. Zu diesem Zeitpunkt wird der zu übergebende Wert als Argument verwendet.
  2. (Callee) Ruft den in FragmentArgs.inject (this) </ code> übergebenen Wert ab.
  3. (Callee) Speichern Sie den erfassten Wert in der Variablen mit @Arg </ code>.

Übergeben eines Werts (beim Übergeben von Benutzername, Alter an MyFragment)

   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.

Wie erhalte ich den Wert?

  • Deklarieren Sie eine Variable (Benutzername, diesmal Alter), um den empfangenen Wert zu speichern. FragmentArgs generiert eine Builder-Klasse aus den folgenden Feldern.
  @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.

  • In der deklarierten Variablen speichern (beschrieben in OnCreate)
FragmentArgs.inject(this)

Der obige Code entspricht getArlements () </ code> und wird der Variablen mit @Arg </ code> zugewiesen.

Zusammenfassend lautet der Code wie folgt.

  • Vergessen Sie zu diesem Zeitpunkt nicht, @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

Was tun, wenn der Builder nicht automatisch generiert wird?

Die Beschreibung von Gradle ist möglicherweise falsch. Lassen Sie uns den Beschreibungsort und den Beschreibungsinhalt (ver usw.) erneut überprüfen.

  • Achten Sie auf Fehler in der Beschreibung von apt und annotationParser.

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.

Reihenfolge der Argumente beim Übergeben von Werten

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. ..

Bei Verwendung von DialogFragment

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