Empfohlener Aufbau für eine App?

  • Antworten:6
Jan G.
  • Forum-Beiträge: 27

27.11.2017, 17:59:38 via Website

Hallo zusammen,

zur Zeit sitze ich mal wieder an einem neuen Projekt. An sich ist es relativ simpel gehalten. Es dient eigentlich nur zur Informationsausgabe und Abfrage von Inhalten aus dem Internet. Dort liegt aber (noch) nicht mein Problem.

Bei mir stellt sich gerade nur eher die Frage, wie man denn solch eine App am besten aufbaut? Um das ganze mal ein wenig konkreter zu machen:

Es geht um eine App, wo der Nutzer zuerst über ein Sidebar-Menu eine Kategorie auswählt. Auf dieser Kategorie-Seite, gibt es dann verschiedene Knöpfe, die wiederum auf die gewünschte Informationsseite weiterleitet. Klingt erstmal sinnlos, ich probiere es aber auch nur so generell wie möglich zu beschreiben.

Jetzt stell ich mir aber die Frage: Bei den ständigen Layout-Wechseln (Startseite, Kategorie-Seite - und das in vielen verschiedenen Ausführungen), nutzt man dann für jede neue Kategorie-Seite, bzw. Produkt-Seite eine eigene Activity oder einfach nur ein neues Layout, zwischen dem man dann jeweils wechselt?

Habe beide Varianten mal durchprobiert, die Activity-Variante fand ich sehr umständlich und aufwändig, bei der Layout-Variante hat es nicht so ausgesehen, wie ich es wollte. Welcher Ansatz ist denn nur richtig?

Konnte im Internet zu so grundsätzlichen Fragen leider nichts finden.

Grüße,
Jan

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

27.11.2017, 18:02:53 via App

Hallo Jan,
du brauchst eine Mischung aus beidem,
oder du nutzt direkt Fragments, da hast du dann eine FragmentActivity die zwischendurch umschaltet.
Die Logik und Ansteuerung des Layouts bleibt bei. Fragment gebunden.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jan G.
  • Forum-Beiträge: 27

27.11.2017, 22:08:17 via Website

Und dann kann ich quasi auch mit 'ner onClick-Methode verschiedene Fragments einblenden?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.11.2017, 07:00:33 via App

jo das geht auch. Kannst da den FragmentManager nutzen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Jan G.
  • Forum-Beiträge: 27

28.11.2017, 18:38:41 via Website

Also, ich habe mich mal an den Fragments probiert. Jedoch will es bei mir nicht, da es im Internet so viele verschiedene Möglichkeiten anscheinend gibt, um das umzusetzen.

Ich habe bis jetzt schon ausprobiert, für jedes Fragment eine eigene Activity zu erstellen, nur eine XML-Datei zu erstellen. Muss ein Fragment auch ein die XML-Datei der Main_Activity?
Habt ihr vielleicht einen guten, anschaulichen Guide oder ein gutes Video, wo das alles ein bisschen näher erklärt wird?
Ich glaube ich mache es mir viel zu kompliziert.

Antworten
Jan G.
  • Forum-Beiträge: 27

29.11.2017, 15:05:05 via Website

Komischerweise will es bei mir aber nicht. Ich habe mich an der offiziellen Dokumentation orientiert:

Eine neues Fragment erstellt (inkl. java-Datei) und dieses Fragment dann in meine content_main.xml eingefügt (Ich benutze für die vorgefertigte App eine Navigation-Activity mit dem Side-Menu).

Sieht nun so aus:

*content_main.xml*

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="xx.xxxxxxxxxx.xx.MainActivity"
    tools:showIn="@layout/app_bar_main">

    <fragment android:name="xx.xxxxxxxx.xx.Fragment"
        android:id="@+id/fragment"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

die MainActivity (onCreate) so:

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

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

}

Allerdings kriege ich beim Start dann immer eine Fehlermeldung in der folgenden Zeile: setContentView(R.layout.activity_main);

Diese sieht so aus:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

Ich komme da leider nicht hinter. :/

Grüße

Antworten