Programmisch fügen Sie Fragmente zur Viewgroup hinzu

Im Grunde ist dies meine App (Idee) für eine Tablette Querformat: Zwei Fragmente, links Fragment ist ein listfragment von einer resource.xml Datei gefüllt (Got that working).

Das richtige Fragment soll das Fragment und das Layout dynamisch ändern, je nachdem, welches Listenelement der Benutzer klickt. Googeln hat mir bis jetzt gesagt, dass ich programmgesteuert hinzufügen und Fragmente zu einer Viewgroup entfernen muss, um das zu tun. Ist das richtig?

Grundsätzlich ist die Frage:

  1. Wie erstelle ich die Viewgroup und wo (Main.java oder menufragment.java)?
  2. Wie stelle ich den dynamischen "Benutzer klickte ID 3 auf die Liste so füge Fragment 3 der Viewgroup"
  3. Was füge ich meiner main.xml Datei hinzu? Bekam das Fragment für die listfragment dort, was für die dynamische viewgroup hinzuzufügen?

BEARBEITEN:

Also das ist, wie meine Tätigkeit aussieht: Main.java

public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 

Dies ist meine listfragment MenuFragment.java

 public class MenuFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.listfragment, container, false); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.listmenu))); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); Main activity = (Main) getActivity(); } } 

Und schließlich meine main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <fragment android:id="@+id/list" android:layout_width="200dp" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_weight="1" class="com.mwerner.fragmentstest.MainMenu" /> <View android:id="@+id/contentview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/list" /> </RelativeLayout> 

Das String-Array habe ich in meiner XML-Datei, die die Liste füllt, heißt "listmenu"

Ich bin ein Anfänger. Plaese erzähl mir, wo ich den Code einlegen muss, den du niedergeschrieben hast?

Danke, Max

One Solution collect form web for “Programmisch fügen Sie Fragmente zur Viewgroup hinzu”

Schauen Sie sich diese Fragment-Themen an:

  • Programmieren Sie das Fragment programmgesteuert zu einer vorhandenen ViewGroup
  • Kommunikation mit der Aktivität

Im Wesentlichen willst du das linke Fragment haben, das die übergeordnete Aktivität sagt, welches Element ausgewählt ist. Dann kann die Aktivität das richtige Fragment im rechten Fensterbereich hinzufügen / entfernen.

Denken Sie daran, dass das Erstellen / Zerstören eines Fragments eine Menge Arbeit für das System ist. Wenn du mit einem einzigen Fragment im richtigen Fenster wegkommst, wird es viel effizienter sein. Sie können dann Methoden auf diese Fragment-Instanz aufrufen, ohne neue Fragmente zu erstellen.

EDIT (Beispiel):

Ihre Hauptaktivitätsimplementierung mit benutzerdefinierter Methode:

 public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /** Called by the left fragment */ public void updateRightPane(long id) { // Get the data with the selected item id // ... // Create a new fragment MyFragment fragment = new MyFragment(data); // Update the layout FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); // The id specified here identifies which ViewGroup to // append the Fragment to. ft.add(R.id.view_group_id, fragment); ft.commit(); } } 

Die onListItemClick Implementierung für MenuFragment.java :

 @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // Get the parent Activity Main activity = (Main) getActivity(); // Pass the selected item id to the Activity method // Note: Feel free to update this method to accept additional // arguments (eg position). activity.updateRightPane(id); } 

Schließlich ist Ihre Layout-Datei:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/view_group_id" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <!-- More views here... --> </RelativeLayout> 
  • Verschieben Android-Fragment auf einen anderen Container Kann nicht ändern Container-ID von Fragment
  • ViewGroup beenden das Ereignis
  • NullPointerException: Versuchen Sie, aus dem Feld 'int android.view.View.mViewFlags' zu lesen.
  • Aufbau eines Zoom-fähigen Containers
  • So erhalten Sie den Index der bestimmten (benutzerdefinierten) Ansicht von ViewGroup (FrameLayout), nachdem Sie onLongClick auf der Ansicht getan haben
  • Android - Verstecken
  • RemoveView funktioniert nicht nach LayoutInflater.inflate (Ressource, root, true)
  • Wie bekomme ich einen Blick nach vorne ohne Aufruf bringToFront ()?
  • Compound Controls Weiterleitung State
  • Android View und ViewGroup
  • Android: Verwenden von FEATURE_NO_TITLE mit benutzerdefinierten ViewGroup lässt den Speicherplatz auf dem Fenster
  • Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.