Fragment zeigt nicht nach dem aufblasen [Behoben, aber...]
Ich versuche zu schaffen, ein Musik-player sichtbar sein werden alle meine Aktivitäten. Um dies zu tun, werde ich eine Fragment
wie einige von Euch mir geraten, früher.
Da ich keine Erfahrung mit Fragments
auch immer, ich beschlossen, ein fragment in einem "Füllstoff" Aktivität ersten.
Ich erstellte ein einfaches fragment, enthält nur eine Schaltfläche, und Sie text ein, und versuchen Sie, sich zu füllen, dass in meinem Füller Aktivität.
Jedoch nach dem aufblasen dieses fragment nicht angezeigt. Eine Nachricht wird ausgedruckt, um LogCat sagt mir, dass das fragment wurde aufblasen.
Ich bin mir ziemlich sicher, dass ich ' m fehlt etwas, aber da habe ich keine Erfahrung damit und ich konnte Sie nicht finden, ein tutorial, das ganz erklärt, wie dies zu tun, ich weiß nicht, was es ist, das fehlt mir.
Musik-player-Fragment
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);
}
}
Musik-Player-layout
<?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>
Füller Aktivität
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();
}
});
}
}
Füller layout
<?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>
Offensichtlich mache ich etwas falsch, aber was?
Hinweis: ich bin mit Android 2.3 mit der Kompatibilitäts-Bibliothek.
Jede Hilfe ist willkommen
Das problem wurde behoben mit Hilfe von Yashwanth Kumar und blessenm. Man gab eine XML-Lösung, die anderen eine programmatische Lösung. Nun, ich Frage mich nur, welche Lösung ist am begehrtesten. Gibt es irgendwelche Zugeständnisse gemacht werden, mit einer der beiden Lösungen, oder macht es alles einkochen bis die Programmierer die bevorzugte Lösung?
Fragment
und nie vor zu wechseln, ich würde sagen, dass das xml-Weise vorzuziehen wäre. Wenn Sie beabsichtigen, Sie zu tauschen, um Fragments
wenn die app ausgeführt wird - um die Fragment
programaticly kann wünschenswert sein, um die Ablaufsteuerung (z.B. wissen Sie, was Fragment
angezeigt wird, und welches zu vertauschen mit).Okay, ich bleibe bei XML dann da (zumindest für den Moment) der Musik-player wird nur
Fragment
. Danke für die Antwort!InformationsquelleAutor Sander van't Veer | 2011-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich noch nicht versucht, indem Fragmente direkt in xml. Aber was ich normalerweise tun ist, fügen Sie ein framelayout oder linearlayout, um die Füller-layout.
Angenommen, dessen id ist 'fragment_holder'. Ich verwende den folgenden code in die fragment-Aktivität direkt nach setContentView. Versuchen Sie, diese
yashwanths war die richtige Antwort. Mir ist nur eine Alternative Lösung.
Schaltete mein akzeptierte Antwort herum. Nach dem ausmisten über mit das fragment, ich war nicht erfolgreich, fügt es ein framelayout, aber Ihre Methode funktionierte perfekt. Also nochmals vielen Dank
InformationsquelleAutor blessenm
sollten Sie erwähnen, layout_height als 0dip, nicht die Breite, in der vertikalen linearen layout.
ändern, dass es funktionieren sollte.
InformationsquelleAutor Yashwanth Kumar