Sto provando a creare un lettore musicale che sarà visibile in tutte le mie attività. Per fare questo, userò uno Fragment
come qualcuno di voi mi ha consigliato in precedenza.Il frammento non viene visualizzato dopo il gonfiaggio [Fisso, ma ...]
Poiché non ho esperienza con Fragments
, ho deciso di implementare un frammento in un'attività di "riempimento" prima. Ho creato un semplice frammento contenente solo un pulsante e del testo, e provo a gonfiarlo nella mia attività di riempimento.
Tuttavia, dopo il gonfiaggio, questo frammento non viene visualizzato. Un messaggio viene stampato su LogCat che mi dice che il frammento si è gonfiato.
Sono sicuro che mi manca qualcosa, ma poiché non ho esperienza con questo e non ho potuto trovare un tutorial che ha spiegato abbastanza come fare questo, non so cosa sia che io ' m mancante.
Lettore musicale Frammento di layout
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);
}
}
Music Player
<?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>
Filler Attività
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();
}
});
}
}
Filler disposizione
<?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>
Ovviamente sto facendo qualcosa di sbagliato, ma cosa?
Nota: Sto utilizzando Android 2.3 con la libreria Compatibilità.
Qualsiasi aiuto è apprezzato
Il problema è stato risolto con l'aiuto di Yashwanth Kumar e blessenm. Uno ha fornito una soluzione XML, l'altro una soluzione programmatica. Ora mi sto chiedendo quale sia la soluzione più desiderabile. Ci sono delle concessioni da fare con una delle soluzioni o si riduce alla soluzione preferita dal programmatore?
Se si utilizza solo uno specifico 'frammento' e non si intende mai accenderlo, direi che sarebbe preferibile il modo xml. Se si intende scambiare intorno a 'Fragments' quando l'app è in esecuzione, aggiungere il' Fragment' in modo programmatico potrebbe essere desiderabile per controllare il flusso (ad es.sai cosa viene visualizzato 'Frammento' e quale scambiare con). – kaspermoerch
Va bene, passerò all'XML perché (per ora almeno) il lettore musicale sarà l'unico "frammento". Grazie per la risposta! –