Android hinzufügen von Fragment-Fragment innerhalb

Hallo (und danke im Voraus),

Ich habe eine Anwendung mit einem Google-Play-Store-ähnliches layout (mit PagerTabStrip mit 5 sub-Fragmente). In einigen dieser Fragmente, die ich brauche, um anzuzeigen, eine kleine info bezüglich der letzten Zeit, die die Daten wurde aktualisiert.

Dachte ich sofort an die Schaffung eines fragments (LastUpdatedFragment), die würde ich dann hinzufügen (nest) zu den Fragmenten, die ich brauchte. Auf den ersten, und da das Datum der letzten Aktualisierung sein sollte, war die gleiche für jeden Bildschirm, die Dinge waren, zu arbeiten (habe ich einfach Hinzugefügt, das fragment in der xml des übergeordneten Fragmente, die ich brauchte, und innerhalb onCreateView ich würde das Datum in der TextView), aber nach einigen änderungen, die ich jetzt brauchen, senden Sie ein bestimmtes Datum für jede dieser LastUpdatedFragment Instanzen.

Kam ich mit one-way - erstellen Sie neue benutzerdefinierte Attribute für mein Fragment und dann würde ich das Datum ich wollte sich. Nach einiger Lektüre bin ich auf eine einfachere Weise (Fragmente in Fragmenten - dinamically hinzufügen das fragment mit FragmentManager) - ich brauchte einfach den übergeordneten Fragment zu behandeln, die input-Parameter und übergeben Sie es an das Kind-fragment.

Das problem ist, ich bekomme zwar keine Fehler, auch ich bekomme keine Kind-fragment ist, nur nicht angezeigt. Ich wäre Ihnen dankbar, wenn Sie könnte mich in die richtige Richtung.

ScoreBoardFragment.java -> Eltern-Fragment

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.fragment_scoreboard, container,
                false);

        for (int i = 0; i < tvCount; i++) {
            tvName = "f_scoreboard_header_tv" + String.valueOf(i);
            resID = getResources().getIdentifier(tvName, "id",
                    _activity.getPackageName());
            header = (TextView) rootView.findViewById(resID);
            header.setTypeface(MyGlobalConfig.getInstance().getHeadersFont());
        }

        FragmentManager childFragMan = getChildFragmentManager();
        FragmentTransaction childFragTrans = childFragMan.beginTransaction();
        LastUpdatedFragment fragB = new LastUpdatedFragment();
        childFragTrans.add(R.id.FRAGMENT_PLACEHOLDER, fragB);
        childFragTrans.addToBackStack("B");
        childFragTrans.commit();        


        return rootView;
    }

fragment_scoreboard.xml (vereinfacht aber die Darstellung alles andere)

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

        <LinearLayout
            style="@style/ListView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/f_scoreboard_header_tv0"
                style="@style/ListViewRowHeader"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="#" />

        </LinearLayout>

        <ListView
            android:id="@+id/f_scoreboard_lvbody"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true" >
        </ListView>

    </LinearLayout>

LastUpdatedFragment.java -> Kind Fragment

        public class LastUpdatedFragment extends Fragment{
        private View rootView;
        private TextView tv;
        private Context ctx;

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(
                    getActivity()));
            this.ctx = getActivity().getApplicationContext();

        }

        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            rootView = inflater.inflate(R.layout.fragment_date, container,
                    false);
            tv = (TextView) rootView.findViewById(R.id.f_date_tv);
            tv.setTypeface(MyGlobalConfig.getInstance().getBodyFont());
            tv.setText(getString(R.string.lastupdated) + ": " + Util.getLastUpdated(ctx));
            return rootView;
        }
    }

fragment_date.xml

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

        <TextView
            android:id="@+id/f_date_tv"
            style="@style/LastUpdatedTV"
            android:layout_width="match_parent"
            android:text="Data de última actualização: 27/12/2014 21:30" />
    </LinearLayout>
wo ist FRAGMENT_PLACEHOLDER erklärt ?
in der fragment_scoreboard.xml -> es ist die id des ersten LinearLayout
Versuchen FrameLayout statt LinearLayout als Platzhalter.
wo hast du das add ScoreBoardFragment?
das tut es! Schreiben Sie Ihre Antwort, und ich werde es akzeptieren ;). Danke Euch beiden

InformationsquelleAutor Bernardo | 2015-01-06

Schreibe einen Kommentar