-2

Zunächst einmal, auch wenn ich irgendwie verstehe, was sind die Unterschiede zwischen Fragmente und Aktivitäten, kann ich nicht sagen, was ist besser zu verwenden.Wie erstellt man Fragmente in der Benutzeroberfläche?

Ich möchte eine einfache drawerview erstellen. Der Benutzer kann aus den Optionen im Menü der Schublade auswählen und die Hauptseite ändert sich. AppBar sollte bei allen Änderungen vorhanden sein, da ich den Titel dort haben möchte.

Die Benutzeroberfläche ist in der .xml Format geschrieben und ich kann nicht herausfinden, wie man das in Java-Dateien verwendet, um von der mainActivity aufgerufen werden. Ich möchte ungefähr 4 bis 5 verschiedene Seiten verwenden, die sich beim Klicken auf Schaltflächen im Haupt-UI-Format ändern.

Ich habe versucht, mit Fragmenten Form Android Studio Entwickler Abschnitt zu arbeiten, aber kein Glück. Leider ist es nicht dasselbe wie JavaFX oder Qt, die ich einige Erfahrung auf UI habe. Auch wenn jemand die Logik erklären könnte, der ich folgen muss, um android UI zu verstehen, und wie man diese Art von Problemen löst, würde ich es schätzen.

+0

„was ist besser zu nutzen“ zu finden? FYI-Aktivität ist eine Komponente und Fragment ist nur ein Teil der Benutzeroberfläche. Es gibt kein Fragment ohne Aktivität. – ADM

Antwort

0

Eine Aktivität ist eine Android-Komponente, die Fragment halten kann (modularer Teil der App, die zur Laufzeit erzeugt und zerstört werden kann, nicht Aktivitäten wie die bei der Kompilierung im Manifest deklariert werden müssen.)

Hinweis: Fragment kann ohne Elternaktivität nicht existieren.

Also für Ihre Anforderung, können Sie eine MainActivity.java haben, dieAppcompatActivity erstreckt und eine weitere Entfernteil wie Fragmente halten.

So können Sie einen erstellen.

machen ein Layout wie unten activity_main.xml

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<!-- The main content view --> 
<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
<!-- The navigation drawer --> 
<android.support.design.widget.NavigationView 
    android:id="@+id/navigation" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:menu="@menu/my_navigation_items" /> 

und in Ihrem MainActivity.java

public class MainActivity extends Activity { 
private String[] mPlanetTitles; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
... 

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

    mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView) findViewById(R.id.left_drawer); 

    // Set the adapter for the list view 
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_list_item, mPlanetTitles)); 
    // Set the list's click listener 
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    ... 
} 

}

Griff clic k Ereignisse, die verwendet werden, um das erforderliche Fragment zu ersetzen.

private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     selectItem(position); 
    } 
} 

/** Swaps fragments in the main content view */ 
private void selectItem(int position) { 
    // Create a new fragment and specify the planet to show based on position 
    Fragment fragment = new PlanetFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); 
    fragment.setArguments(args); 

    // Insert the fragment by replacing any existing fragment 
    FragmentManager fragmentManager = getFragmentManager(); 
    fragmentManager.beginTransaction() 
        .replace(R.id.content_frame, fragment) 
        .commit(); 

    // Highlight the selected item, update the title, and close the drawer 
    mDrawerList.setItemChecked(position, true); 
    setTitle(mPlanetTitles[position]); 
    mDrawerLayout.closeDrawer(mDrawerList); 
} 

@Override 
public void setTitle(CharSequence title) { 
    mTitle = title; 
    getActionBar().setTitle(mTitle); 
} 

dieses ist einfach und ausführliches Beispiel kann here

Verwandte Themen