Navigation Drawer

  • 135 Antworten
  • Letztes Antwortdatum
Habs einmal so (whoPlays) dann im Fragment:
Code:
public static class FragmentMenuePunkt5 extends Fragment
    {
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            //View rootView = inflater.inflate(R.layout.game, container, false);
            RelativeLayout rl = (RelativeLayout)inflater.inflate(R.layout.game, container, false);
            TextView tw1 = (TextView)rl.findViewById(R.id.thisoneisplaying);
            if(anzspieler==2)
            {
                ((MainActivity)getActivity()).whoPlays(View);
            }
            return rl; 
        }
    }


und einmal so probiert (war da ja auch einmal so):
Code:
public static class FragmentMenuePunkt5 extends Fragment
    {
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.game, container, false);
            RelativeLayout rl = (RelativeLayout)inflater.inflate(R.layout.game, container, false);
           
            return rl; 
        }
    }

Stimmt aber iwie nicht :s
Aufjedenfall stürzt es dann immer noch ab
 
Beim ersten immer noch NPE auf dem setText?

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Ja, immer noch an der selben Stelle. Ich kann die Zeile "TextView tw1 = (TextView)findViewById(R.id.thisoneisplaying);",auch aus der Methode whoPlays selbst nicht rauslassen, obwohl ich das ja jetzt im Fragment habe.
 
Mach doch tw1 zu der Klassen variable des Fragments und initialisiere die in onCreateView. Dann kannst du da in whoplays drauf zugreifen.

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Code:
public static class FragmentMenuePunkt5 extends Fragment
    {
        static TextView tw1;
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            
            RelativeLayout rl = (RelativeLayout)inflater.inflate(R.layout.game, container, false);
         
            tw1 = (TextView)rl.findViewById(R.id.thisoneisplaying);
            if(anzspieler==2)
            {
                ((MainActivity)getActivity()).whoPlays(View);
            }
            return rl; 
        }
    }

so? Oder habe ich was vergessen, aufjedenfall kann ich die initialisierung in der whoPlays noch nicht weg machen, da es dann wieder Fehler gibt
 
WhoPlays ist ja doch in der activity. Das muss ja dann auch in dem Fragment sein.

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Code:
public static class FragmentMenuePunkt5 extends Fragment
    {
        static TextView tw1;
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            
            RelativeLayout rl = (RelativeLayout)inflater.inflate(R.layout.game, container, false);
         
            tw1 = (TextView)rl.findViewById(R.id.thisoneisplaying);
            public void whoPlays(View view)
            {
             ......CODE.....
             }
            if(anzspieler==2)
            {
                ((MainActivity)getActivity()).whoPlays(View);
            }
            return rl; 
        }
    }

Also da in der oncreate?
 
Ne. Aber in der Klasse. Also nach dem return rl; und der entsprechenden Klammer.

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
1a, das klappt ! :D

Danke dir mal wieder :)
 
Sooo, hab fast alles so wie ichs will ! :)
Habe aber jetzt z.b einen Menüpunkt (im Drawer) wo ich keinen Seitenwechsel auslösen möchte, sondern einfach nur eine Methode aufrufen möchte, die dann einen alert dialog ausgibt.
Wie kann ich das am besten machen?
 
Ist die Frage jetzt ernst gemeint? Du entscheidest doch je nachdem welches Item gewählt wurde, welches Fragment erscheinen soll... Warum nicht einfach bei einem Item eben nur eine Methode aufrufen und kein Fragment ersetzen?
 
Weils dann nen Absturz gibt ;-)
Ich stell die Frage nicht umsonst

Habs hin und her versucht, funktioniert erst sobald ich dann wieder nen fragment ersetze
 
Code? Sollte eigentlich kein Problem sein.

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
kleinerkathe schrieb:
Ist die Frage jetzt ernst gemeint? Du entscheidest doch je nachdem welches Item gewählt wurde, welches Fragment erscheinen soll... Warum nicht einfach bei einem Item eben nur eine Methode aufrufen und kein Fragment ersetzen?
Ich wiederhole das nochmal ... Ich glaub hier haperts etwas an den Grundlagen oder? ;)

onItem wirft dir nen int bzgl. welches Item in der Liste ausgewählt wurde, jetzt kannst du entscheiden wenn eben das gewünschte Item ausgewählt wurde, dass eine Methode ausgeführt werden soll.
 
Das Problem wird hier liegen:

PHP:
FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

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

Natürlich schmiert das ab, weil deine Variable "fragment" dann null ist... Also Prüfung rein oder was auch immer, dass dieser Code-Teil nur aufgerufen wird, wenn auch wirklich ein Fragment ausgetauscht wird.

Muss dem kleinen kathen zustimmen, GRUNDLAGEN! Das ist echt kein Fehler, den man als Anfänger nicht beheben und finden kann - ist ja höchstwahrscheinlich nur eine NullPointerException und die Log wirft ja immer die jeweilige Code-Zeile, wo der Fehler auftritt...
 
Oh man :laugh:

ja, natürlich habt ihr recht. Weiß auch nicht, gestern war wohl nicht mein Tag -.-
 
Zurück
Oben Unten