Navigation Drawer

  • 135 Antworten
  • Letztes Antwortdatum
Das OverflowMenu in der ActionBar wird aber per xml geladen.
Das sind die drei Punkte oben rechts.

Wenn du die Liste im Drawer meinst, musst du mDrawerList einen neuen Adapter mit dem neuen String-array zuweisen.
 
Ja die Liste mein ich, sorry :D
Ahh, okay. Also kann ich das so machen, dass ich im gewünschten fragment dann einfach den mdrawerlist nen neuen adapter mit String Array zuweise?
 
Am besten schreibst du dir eine Methode in der Activity, die das macht und rufst die dann vom Fragment aus auf.
 
Code:
  mTitle = mDrawerTitle = getTitle();
        mPlanetTitles = getResources().getStringArray(R.array.home_menu);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

        // set a custom shadow that overlays the main content when the drawer opens
        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
        // set up the drawer's list view with items and click listener
        mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mPlanetTitles));
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

Muss in die Methode dann das rein?
Oder ist das nur für die Titel?
 
Code:
mPlanetTitles = getResources().getStringArray(R.array.home_menu);
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mPlanetTitles));

Nur die beiden Zeilen. Und dann eben in der ersten Zeile so anpasen, dass das neue Array genommen wird, also bspw:
Code:
mPlanetTitles = getResources().getStringArray(R.array.home_menu_neu);
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mPlanetTitles));
 
Okay, jedoch kann ich die Methode in der Klasse nicht aufrufen.
Ich sollte den modifier der Methode zu static ändern.

Daher wollte ich sie im switch aufrufen. Ergab auch soweit keine Fehlermeldung. Jedoch stürzt die App nun ab, wenn ich den besagten Menüpunkt wähle Oo
Muss ich nicht auch noch irgendwie die Titel anpassen? Weil das home_menu array, wird ja auch zum Titel setzen und ermitteln benötigt
 
Fehlermeldung?

Mit getContext.deineMethode innerhalb des Fragments kannst du die Methode aufrufen

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Zuletzt bearbeitet:
Nicht im switch aufrufen! Damit könnte ggf. "position" wieder null sein, was du ja aber noch am Ende (unterhalb des switches) brauchst.

Bzw. der Code:

mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);


wird ja ggf. schon obsolet, zumindest die erste Zeile, weil du ja eh das Menü austauschst, braucht kein Item als Checked gesetzt werden.

Also tausch am besten das Menü erst nach "closeDrawer" aus.
 
Das mit dem getContext haut nicht so ganz hin, dann soll ich aufeinmal ne variable getContext erstellen?!
 
Dann getActivity(). Wie hier beschrieben.
 
Suuuupppeeer ! :D
Es funktioniert !
Ich werde das ganze nun in meine vorhandene App integrieren und dann berichten ob es funktioniert hat ! :)


Danke euch schon tausendmal für die super gute und schnelle Hilfe !

Der ursprüngliche Beitrag von 17:29 Uhr wurde um 17:57 Uhr ergänzt:

Okay, hab ne kleine Frage.
Ich muss ja gewisse Einträge in die R.java vornehmen, jedoch werden meine Einträge nie übernommen sondern direkt wieder rausgenommen. Wie kriege ich nun die Einträge dort rein? :D
Ich nutze eclipse :)
 
Du selber solltest in R.java nix verändern. Steht auch oben in der Datei drin. Was willst du denn da rein haben?
 
Eclipse mecker halt bei solchen Zeilen wie

Code:
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
In dem Fall müsste halt noch drawer_shadow in der r.java erstellt werden

drawer_shadow
ic_drawer
action_websearch

sind in dem Fall die 3 betroffenen. In dem Beispiel Programm sind sie in der R.java auch drinn. In meinem Programm halt nicht
 
Wenn die Dateien auch wirklich vorhanden sind, mach mal ein Project Clean.
Dann wird die Datei neu erzeugt.
 
Hab nen clean gemacht. Jedoch leider ohne Erfolg :/

Also die genaue Fehlermeldung in der Zeile lautet z.B: drawer_shadow cannot be resolved or is not a field
 
Zuletzt bearbeitet:
Schau mal ob bei den imports "import android.R" beisteht. Wenn ja, änder das zu "import dein.package.name.R". Sollte dann noch com.example.NavigationDrawer oder so sein.
 
import android.R war nicht dabei. Hab das dann mal mit den importieren meines paket namens gemacht, hat aber auch keinen Erfolg gezeigt. Hab danach auch nochmal nen clean gemacht
 
Dann hast du vielleicht einen Fehler in einer xml Datei.
Zb dürfen die nur mit kleinen Buchstaben beginnen.
Falls du da vorher was irgendwie geändert hast, schau mal da nach.
 
Ich glaube wir kommen der Sache näher.
Ich habe die 3 XML Dateien aus dem Beispiel übernommen.
Bei der drawer_list_item.xml gibt es 3 Fehler.
Anscheinend ist es ein API Problem. Da ich meins auf 9 gesetzt habe und mindestens 11 bzw. 14 vorausgesetzt wird.

Wie kann ich denn das minimum ändern?

ahh habs auf 14 geändert. die Fehler in der XML sind weg. Jedoch immer noch die Fehler in der MainActivity vorhanden
 
Zuletzt bearbeitet:
Ja du brauchst ja mindestens 11 für die ActionBar. Gehts denn, wenn du das wieder hoch setzt?
 
Zurück
Oben Unten