Pregunta

Estoy tratando de crear un reproductor de música que sea visible en todas mis actividades. Para hacer esto, voy a usar un Fragment Como algunos de ustedes me aconsejaron antes.

Ya que no tengo experiencia con Fragments En todo momento, decidí implementar un fragmento en una actividad de "relleno" primero. Creé un fragmento simple que contenía solo un botón y algún texto, e intenté inflarlo en mi actividad de relleno.

Sin embargo, después de inflar este fragmento no aparece. Se imprime un mensaje para que Logcat me indique que el fragmento se ha estado inflando.

Estoy bastante seguro de que me estoy perdiendo algo, pero como no tengo experiencia con esto y no pude encontrar un tutorial que explique cómo hacer esto, no sé qué es lo que me estoy perdiendo.

Fragmento de reproductor de música

public class AppMusicPlayer extends Fragment{


     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
         System.out.println("fragment added");
            return inflater.inflate(R.layout.musicplayer_main, container, false);
        }


}

Diseño del reproductor de música

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


    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is the fragment you're looking for" />

</LinearLayout>

Actividad de relleno

public class Filler extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.filler);

        Button b = (Button) findViewById(R.id.terug);
        b.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                Intent intent = new Intent();
                setResult(RESULT_OK, intent);
                finish();
            }
        });

    }

}

Diseño de relleno

<?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="match_parent"
    android:orientation="vertical" >
<!-- Title bar -->
    <RelativeLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:background="@drawable/title_bar" >

        <TextView
            android:id="@+id/fillertitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="Work In Progress"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="bold" >
        </TextView>

        <Button
            android:id="@+id/terug"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_centerVertical="true"
            android:background="@drawable/button_back"
            android:text="Back"
            android:textColor="#FFFFFFFF"
            android:textStyle="bold" >
        </Button>
    </RelativeLayout>
<!-- End of title bar -->
    <TextView
        android:id="@+id/wip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="This section of the app has not been made yet. Work in progress." >
    </TextView>

    <fragment
        android:id="@+id/musicPlayerFragment"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:name="com.mobowski.app.player.AppMusicPlayer" />

</LinearLayout>

Obviamente estoy haciendo algo mal, pero ¿qué?

Nota: Estoy usando Android 2.3 con la biblioteca de compatibilidad.

Se agradece cualquier ayuda


El problema se ha solucionado con la ayuda de Yashwanth Kumar y Blessenm. Uno dio una solución XML, la otra una solución programática. Ahora me pregunto qué solución es la más deseable. ¿Hay alguna concesión que se haga con cualquiera de las soluciones, o todo se reduce a la solución preferida del programador?

¿Fue útil?

Solución

No he intentado agregar fragmentos directamente a XML. Pero lo que normalmente hago es agregar un framelayout o linealLayout al diseño de relleno.

Supongamos que su identificación es 'fragment_holder'. Utilizo el siguiente código en la actividad de fragmentos justo después de SetContentView. Prueba esto

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.fragment_holder,new AppMusicPlayer(),"musicplayer");
ft.commit();

Otros consejos

Debe mencionar LEYOUT_HEight como 0DIP, no el ancho en el diseño lineal vertical.

cambiar que debería funcionar.

<fragment
        android:id="@+id/musicPlayerFragment"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:name="com.mobowski.app.player.AppMusicPlayer" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top