Hola (y gracias de antemano),

Tengo una aplicación con la Tienda de Google Play como de diseño (utilizando PagerTabStrip con 5 sub fragmentos). En algunos de esos fragmentos me tendrá que mostrar un poco de información con respecto a la última vez que los datos se actualizan.

Inmediatamente pensé en la creación de un fragmento (LastUpdatedFragment) que me permitiría agregar (nido) para los fragmentos que necesitaba. En primer lugar, y desde la fecha de la última actualización iba a ser el mismo para cada una de las pantallas, las cosas estaban funcionando (yo simplemente añade el fragmento en el xml de los padres de los Fragmentos que yo necesitaba, y dentro de onCreateView me gustaría poner la fecha en el TextView), pero después de algunos cambios ahora necesito enviar una fecha específica para cada uno de estos LastUpdatedFragment instancias.

Se me ocurrió una forma de creación de nuevos atributos personalizados para mi Fragmento y, a continuación, me gustaría establecer la fecha que yo quería. Después de leer un poco me topé con una forma más fácil (Fragmentos dentro de los Fragmentos de – dinámicamente, añadir el fragmento FragmentManager) – yo simplemente necesitaba el padre Fragmento para manejar los parámetros de entrada y pasar al niño fragmento.

El problema es que, aunque no tengo errores también tengo ningún niño fragmento, simplemente no muestra. Yo estaría agradecido si pudiera guiarme en la dirección correcta.

ScoreBoardFragment.java -> el Padre Fragmento

    @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 (simplificado, pero mostrando todo lo demás)

    <?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 -> Niño Fragmento

        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>
  • donde se FRAGMENT_PLACEHOLDER declarado ?
  • en el fragment_scoreboard.xml -> es el identificador de la primera LinearLayout
  • Intente utilizar FrameLayout en lugar de LinearLayout como Marcador de posición.
  • ¿de dónde agregar ScoreBoardFragment?
  • que hace! Escriba su respuesta y lo acepto ;). Gracias a ambos
InformationsquelleAutor Bernardo | 2015-01-06

1 Comentario

  1. 4

    Intentar utilizar FrameLayout en lugar de LinearLayout como Marcador de posición.

Dejar respuesta

Please enter your comment!
Please enter your name here