[JAVA] Erstellen Sie weitere Registerkarten und Fragmente im Fragment von BottomNavigationView

Als ich BottomNavigationView einmal gemacht und Tabhost und sein Fragment darin gemacht habe, war ich süchtig danach, also mach dir eine Notiz.
Ich habe hauptsächlich auf die Referenz unten verwiesen, aber ich behebe sie, weil einige Fehler aufgetreten sind. Erstens ist es eines von jedem Fragment, das durch BottomNavigationView geteilt wird.

Übergeordnetes Fragment.java


Das übergeordnete Fragment der öffentlichen Klasse erweitert das Fragment{
    public static Record newInstance() {
        return new Record();
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.record, container, false);
        //Holen Sie sich Fragment Manager
        FragmentManager mFragmentManager = getChildFragmentManager();
        //Holen Sie sich FragmentTabHost von XML, ID ist Android.R.id.Beachten Sie, dass es Tabhost ist
        FragmentTabHost tabHost = (FragmentTabHost)v.findViewById(android.R.id.tabhost);
        Log.d("tabHost", String.valueOf(tabHost));
        //Richten Sie dies ein, indem Sie den Kontext, FragmentManager und die ID der Ansicht übergeben, die dem Fragment entspricht.
        tabHost.setup(getActivity().getApplicationContext(), mFragmentManager, R.id.content);
        //Übergeben Sie eine beliebige ID an das Argument vom Typ String
        //Dieses Mal bereiten wir zwei TabSpecs vor, um zwischen den beiden Fragmenten aus dem FragmentTabHost zu wechseln.
        TabHost.TabSpec mTabSpec1 = tabHost.newTabSpec("tab1");
        TabHost.TabSpec mTabSpec2 = tabHost.newTabSpec("tab2");
        //Übergeben Sie die Zeichen, die auf der Registerkarte angezeigt werden sollen
        mTabSpec1.setIndicator("This is tab1");
        mTabSpec2.setIndicator("This is tab2");
        Bundle args = new Bundle();
        args.putString("string", "message");
        //Übergeben Sie ein Argument, um jeder TabSpec eine Klasse zuzuordnen
        //Wenn Sie ein Bundle als drittes Argument haben, können Sie Fragment einen Wert übergeben. Übergeben Sie null, wenn dies nicht benötigt wird
        tabHost.addTab(mTabSpec1,Kinderfragment 1.class, args);
        tabHost.addTab(mTabSpec2,Kinderfragment 2.class, null);
        return v;

    }
}

Kinderfragment 1.java


Das untergeordnete Fragment 1 der öffentlichen Klasse erweitert das Fragment{
statisches untergeordnetes Fragment 1 newInstance() {neues untergeordnetes Fragment zurückgeben 1();}
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        //Wenn Sie während addTab ein Bundle übergeben, erhalten Sie den Wert aus dem Bundle
        //Durchfahrt verboten(Null übergeben)In diesem Fall ist eine Implementierung nicht erforderlich. Ansonsten getString("string")Manchmal tritt ein Fehler auf
        Bundle args = getArguments();
        String str = args.getString("string");
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.Untergeordnetes Fragmentlayout 1, null);
    }
}

Kinderfragment 2.java


Das untergeordnete Fragment 2 der öffentlichen Klasse erweitert das Fragment{
statisches untergeordnetes Fragment 2 newInstance() {neues untergeordnetes Fragment zurückgeben 2();}

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.Untergeordnetes Fragmentlayout 2, null);
    }
}

Übergeordnetes Fragmentlayout.xml


<?xml version="1.0" encoding="utf-8"?>
<!--Die ID von FragmentTabHost muss sein@android:id/mach es tabhost-->
<android.support.v4.app.FragmentTabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!--Wie bei FragmentTabHost wird die ID angegeben. ID muss sein@android:id/zu Registerkarten-->
        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"/>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0"/>

        <!--Fragment wird zum Inhalt hinzugefügt-->
        <FrameLayout
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

    </LinearLayout>
</android.support.v4.app.FragmentTabHost>

Untergeordnetes Fragmentlayout.xml(Untergeordnetes Fragmentlayout1,Untergeordnetes Fragmentlayout2)


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Kinderfragment" />
</LinearLayout>

Anmerkungen:
Es gibt "android.app.Fragment ~" und "android.support.v4.app.Fragment ~" im Fragment-System, aber es scheint besser, sie (natürlich) zu vereinheitlichen.
[Android-Standard Ich verwende v4 unter Bezugnahme auf den Artikel "Support.v4.app.Fragment sollte anstelle von Fragment verwendet werden" (http://qiita.com/LyricalMaestro0/items/a8bafa653fad23dead8e).

Referenz:
FragmentTabHost Memorandum

Recommended Posts

Erstellen Sie weitere Registerkarten und Fragmente im Fragment von BottomNavigationView
[Java] Ordnen Sie die Daten des vergangenen Montags und Sonntags der Reihe nach an
Betrachten wir die Bedeutung von "Stream" und "Collect" in der Stream-API von Java.
Die Frühjahrsvalidierung war in der Reihenfolge von Form und BindingResult wichtig
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Dies und das von JDK
Reihenfolge der Verarbeitung im Programm
[Rails] Unterschied im Verhalten zwischen Delegat und has_many-through bei Eins-zu-Eins-zu-Viele
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Stellen Sie die Anzahl der Sekunden für den schnellen Vor- und Rücklauf in ExoPlayer ein
Bestätigung und Umgestaltung des Flusses von der Anfrage zum Controller in [httpclient]
[Einführung in Ruby] Über die Rolle von true und break in der while-Anweisung
(In 1 Minute bestimmen) Wie verwende ich leer ?, Leer? Und präsent?
Dies und das der Implementierung der zeitlichen Beurteilung von Daten in Java
So ändern Sie die maximale und maximale Anzahl von POST-Daten in Spark
Berechnen Sie den Prozentsatz von "gut", "normal" und "schlecht" im Fragebogen mit SQL
Finden Sie das Maximum und Minimum der fünf in Java eingegebenen Zahlen
Zeigen Sie die dreidimensionale Struktur von DNA und Protein in Ruby-im Fall von GR.rb an
So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
Holen Sie sich das Ergebnis von POST in Java
Die Identität der Schienenparameter [: id]
Ein- und Ausklappen des Inhalts der Recycler-Ansicht
Informationen zur Funktionsweise von next () und nextLine ()
Zusammenfassung der Hashes und Symbole in Ruby
Implementierung von Registerkarten mit TabLayout und ViewPager
Die Geschichte des Schreibens von Java in Emacs
Schreiben Sie die Bewegung von Rakefile in das Runbook
Diskriminierung von Enum in Java 7 und höher
Erstellen Sie mit Xcode Ihre eigenen Verknüpfungen, um komplizierte Pod-Installationsarbeiten zu vermeiden