Navigation Drawer

  • 135 Antworten
  • Letztes Antwortdatum
S

Snipestyle

Erfahrenes Mitglied
3
Hey zusammen,

ich versuche nun seit Stunden so einen "einfachen" (wird ja überall behauptet) Navigation Drawer zu erstellen. Dabei hab ich echt ne Menge Anleitungen gelesen. Ob Englisch oder Deutsch. Irgendwas hat immer nicht funktioniert.
Android-Apps mit Navigation Drawer programmieren | Marvin Menzerath - Tutorials & Reviews zur Technikwelt
Danach wollte ich gerne gehen. Dazu sollte ich aber erst den actionbarsherlock installieren. Habe ich auch getan nur dann hörts auch auf.
Es kommt der Fehler: "Jar mismatch! Fix your dependencies"

Vielleicht könnt ihr mir ja helfen. Bin hier echt am verzweifeln

Viele Grüße
Marcel
 
Lasst doch bitte mal das nachprogrammieren von den Tutorials auf irgendwelchen Seiten und schlagt zuerst auf der offiziellen Seite nach und sollte da wider Erwarten etwas nicht klappen, dann sucht woanders ;)
Creating a Navigation Drawer | Android Developers
 
Anhand deiner, doch recht knapp bemessenen, Infos, rate ich mal ins Blaue hinein:
Du hast vielleicht in dem ABS-library-project eine andere Version der Android-Support-Library drin, als in deinem "richtigen" Projekt.


Mal so nebenbei: Warum überhaupt ActionBarSherlock? Jetzt wo es doch die ActionBar auch in der Android-Support-Bibliothek drin ist?
 
Naja das auf der offiziellen Seite versteh ich ehrlich gesagt nicht so wirklich.
Ich erlerne Dinge immer so. Ich programmiere sie nach, dies hat für mich den Vorteil, dass ich sie deutlich schneller verstehe. Aber da hat ja jeder seine eigene Strategie.

ActionBarSherlock einfach aus dem Grund, weil ich das offizielle nicht wirklich nachvollziehen konnte und ich die Hoffnung hatte, dass dies leichter wird.
Sitze jedoch jetzt wieder vor der ersten Seite und versuchs weiter
 
Kannst ja mit ABS arbeiten, war ja nur so ein Gedanke...

Nichtsdestotrotz: bist meiner Idee nachgegangen?
 
Das habe ich vorhin auch schon probiert nur dann ging irgendwie garnichts mehr :/

Ich gehe jetzt grade mal nach der offiziellen Seite und hänge bei der Initialisierung der DrawerList.
Code:
mPlanetTitles = getResources().getStringArray(R.array.planets_array);
Was soll hier genau geschehen? Im weiteren bekomme ich dort eine Fehlermeldung und soll ein Feld 'array' im Typ 'R' erstellen?!
Kann damit gerade nicht wirklich was anfangen
 
Ahhh, gut das du das Demo Projekt ansprichst. Warum kriege ich das eigentlich nicht zum laufen?!
 
Sollen wir hellsehen? :D

Wo hakts denn?
 
Schön wäre es :D würde vieles erleichtern :D

Es hakt schon beim import. Wenn ich die Datei entpacke und dann importieren will findet eclipse keine projekte oO
Das sollte doch lauffähig sein oder nicht?
 
Grad ausprobiert. Ging ohne Probleme.

Mein Vorgehen: Import... -> Android: Existing Android Code Into Workspace -> Pfad auswählen und Finish.
 
Mehr als seltsam oO

Genauso habe ich es auch gemacht. Jetzt nach mehrmaligen machen gings dann doch aufeinmal ?!
Na gut, aufjedenfall bringt mich das dann doch schonmal nen großen Schritt weiter, da ich nen funktionierendes Beispiel habe ! :)
Ich probiere weiter rum und melde mich dann nochmal falls es wieder nen Problem gibt

Danke und schönen Abend noch :)
 
Danke, dito :o :D
 
So, eine Frage habe ich :D
Das habe ich noch nicht so ganz durchschaut.
Meine App hat 2 XML Dateien. Ist es möglich auf der einen im NavigationDrawer andere Menüpunkte anzeigen zu lassen, als auf der anderen?
 
Du brauchst doch nur mit anderen Daten befüllen. Also deiner DrawerList einen anderen Adapter zuweisen, wo andere Daten drin stehen.
 
Okay, danke ! :)
Ich schau mir das ganze gleich mal intensiv an ! :)

Der ursprüngliche Beitrag von 14:04 Uhr wurde um 15:26 Uhr ergänzt:

Ich habs jetzt schonmal hinbekommen, dass im navigatiodrawer meine gewünschten Menü Punkte für die erste Datei drinnstehen.
Jedoch verstehe ich nicht so ganz gerade, wo festgelegt was passiert, wenn ich auf einen der Punkte draufdrücke.

Findet das hier statt?
Code:
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.home_menu)[i];

            int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
                            "drawable", getActivity().getPackageName());
            ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
            getActivity().setTitle(planet);
            return rootView;
        }
Der Name des Menüpunkt wird in den String planet geschrieben.
Und danach wird das Bild welches den gleichen Namen hat sichtbar?
So ganz verstehe ich das nicht. Hoffe mir kann das nochmal jemand näher bringen :D
 
Der Demo-Code ist doch mit Kommentaren bestückt. Schau mal nach den Kommentar ;) :
"/* The click listner for ListView in the navigation drawer */"
 
Okaaay, ich wüsste jetzt aber nicht wirklich, wie ich da was abändern muss.
Soweit ich das verstehe wird dort ermittelt welche Punkt angeklickt wurde also 1,2,3,4..
und das wird dann an die methode selectItem übergeben

Code:
// update the main content by replacing fragments
        Fragment fragment = new PlanetFragment();
        Bundle args = new Bundle();
        args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
        fragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
Wenn der main content dann das anzuzeigende ist, wird es wohl hier irgendwo passieren oder ?!
Sorry wenn ich mich grade echt so blöd anstelle :D
 
Dein zitierter Code macht folgendes:

Neue Instanz der Klasse PlanetFragment erstellen, Daten (gewählte Position) an dieses Fragment weiter geben (setArguments) und dann das aktuelle Fragment mit dem neu erstellten Fragment austauschen.

Dann schau dir als nächstes die PlanetFragment-Klasse an, die ist ganz unten im Code zu finden (public static class PlanetFragment extends Fragment...). Dort wird in der onCreateView die gewählte Position ausgelesen (das Gedöhns rund um "getArguments()"), der zugehörige String und Bild ausgelesen und Bild ausgetauscht....
 
Okay, das habe ich soweit kapiert. Da habe ich ja auch bereits schon das planet array durch mein eigenes ersetzt, welches ja auch richtig angezeigt wird nur halt die "funktionen" fehlen.

Code:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.home_menu)[i];

            int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
                            "drawable", getActivity().getPackageName());
            ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
            getActivity().setTitle(planet);
            return rootView;
}

Also gehe ich davon aus dass ich den Teil ab "int imageId = ..." abändern muss, kann das sein ? :rolleyes2:
 
Zurück
Oben Unten