Beiträge von prototype0815

    Hey folks,


    ich habe das Problem das meine ET´s (Loginname, Passwort) nicht immer gleich groß sind wenn ich zwischen "landscape" und "portrait" Ansicht switche. Erklären kann ich mir das ganze nicht. Auf dem Tablet sieht alles wunderbar aus.


    Hier mein Layout...


    im Portrait ist das ET Loginname größer...
    [Blockierte Grafik: http://preview.slick.pics/FT9PYiWCB.png]



    und im Landscape das ET Passwort
    [Blockierte Grafik: http://preview.slick.pics/FT9PYiVbP.png]



    Auf dem Tablet sieht alles gut aus, beide sind gleich groß und Zentriert..
    [Blockierte Grafik: http://preview.slick.pics/FT9Pi0AC-.png]



    Vielleicht weiss ja jemand was ich falsch mache...
    LG proto

    könnte es an meinem CustomSpinnerAdapter liegen ???


    Dein Problem ist, dass Du onCreate() benutzt hast, um das View zu setzen. Das funktioniert aber nicht, da eigene Fragmente ihr View selbst erstellen.

    Funktioniert hat meine Variante dann ja, aber damit wird es mir auch erst bewusst wie es funktioniert. ;)


    Dein Ansatz war schon ganz richtig, gehört aber entweder in die onCreateView() oder onViewCreated().
    Den Umweg über ein öddeliges leeres XML brauchst Du gar nicht.

    Das ist ja top, vielen Dank.


    Pack Deinen Code in die onCreateView(), aber rufe nicht setContentView(ll) auf, sondern return ll.

    Funktioniert wunderprima mit der onCreateView() B-)

    habe soeben eine Lösung gefunden und auf stackOverflow gepostet...


    Aber hier nochmal für unsere deutschsprachigen Freunde...


    Zuerst muss eine leere Layout XML erstellt werden...

    HTML
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    </FrameLayout>


    In der Klasse die von Fragment erbt, in der dann das Layout dynamisch erstellt werden soll, genau dieses leere XML Layout inflaten...

    Java
    @Override
      public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    	View view = inflater.inflate(R.layout.blank_layout, container, false);
    	return view;
      }


    Anschliessend in der Methode onCreateView() kann man das Layout dynamisch erstellen...


    Ich hoffe ich konnte damit auch einmal einen gewissen Beitrag zur AndroidDevelopers Community beitragen B-) 8) 8)

    Ich glaube du verstehst mein Problem nicht ganz, ich will kein statisch erstelltes XML-Layout nutzen.
    Ich möchte mein Layout so wie ich es oben im Codeblock gezeigt hab, dynamisch erstellen. Aber jedes Beispiel das ich irgendwo finde basiert auf Activities, und dort wird das dynamisch erstellte Layout dann mit Hilfe von setContentView(); gesetzt. Aber wie macht man das ganze in einer Klasse die nicht von Activity erbt sonder von Fragment??? Bin ich wirklich der erste der das versucht ???


    Was soll mir also das hier bringen?

    Java
    @Override
      public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    	View view = inflater.inflate(R.layout.mein_XML_Layout, container, false);
    	return view;
      }

    hey folks,


    ich würde gerne ohne ein XML Layout die View eines Fragments dynamisch erstellen. Alle Beispiele die ich finde basieren auf einer Activity, ich habe bzw. brauche aber ein Fragment.


    Probleme bereitet mir nur das ich mein LinearLayout nicht auf die View setzen kann ( Zeile 47 )...
    der Rest funktioniert soweit. Deisem Fragment möchte ich später dann mehrere Parameter mitgeben, damit eine unterschiedliche Anzahl Buttons, Checkboxen und Textviews erstellt werden können.
    Dieses Fragment wird erstellt, mit weiteren Fragmenten in einem Array abgelegt und später wird das Array bzw. die Fragmente darin, einem FragmentStatePagerAdapter hinzugefügt.
    Es gibt auch mehrere FragmentStatePagerAdapter die über einen Spinner ausgewählt werden, aber das funktioniert bereits.

    Hier meine ganze Klasse des Adapters... Ab Zeile 69 wird ein Item als Spinner erkannt und eingebunden.



    Ich habe kein Fall gefunden wo ich dem Spinner sage welches Item er setzen soll. Das aber jedes mal der Listener wieder anspringt wenn ich scrolle finde ich eben so seltsam...


    Hier das Anlegen der verschiedenen Elemente für den Navigation Drawer...

    Java
    dataList = new ArrayList<CustomDrawerItem>();
    	dataList.add(new CustomDrawerItem(true, new String[]{"Ein- / Ausgänge", "Baugruppen", "FIFO", "Systemsteuerung"})); // adding a spinner to the list
    	dataList.add(new CustomDrawerItem("My Favorites")); // adding a header to the list
    	dataList.add(new CustomDrawerItem("Message", R.drawable.ic_action_email));
    .
    .


    Hier die Konstruktoren des CustomDrawerItem...


    Hier wird die dataList verwendet...

    Java
    mDrawerList = (ListView) findViewById(R.id.left_drawer);
    	adapter = new CustomDrawerAdapter(this, R.layout.custom_drawer_item, dataList);
    	mDrawerList.setAdapter(adapter);
    .
    .


    Dieser komische Listener bringt mich noch zur Weißglut :O :O :O

    Hey folks,


    ich habe in meinem Android Projekt etwas umsortiert, ich habe in dem Ordner indem alle Java Klassen liegen weitere Unterordner angelegt und die Klassen dort hinein verschoben. Einen Ordner für Fragmentklassen, einen für Activityklassen usw.


    Nun habe ich im Projekt das Problem das manche Klassen nicht mehr gefunden werden, nicht einmal wenn ich einen import hinzufüge der den Pfad des "Package" angibt...z.B.
    com.example.paul_io.custom.CustomDrawerAdapter
    der blau geschriebene Ordner ist einer von denen die ich zum aufräumen angelegt hab.


    Kann es sein das in der "R" Datei irgendwelche Referenzen zu allen Dateien angelegt wird? und diese nun evtl zu einem anderen Pfad zeigt?
    Gibt es im Android Studio eine Funktion die die Projektstruktur neu scant und Änderungen erkennt?


    LG proto

    Hey folks, ich habe derzeit in meiner App einen NavigationDrawer eingebaut, dieser kann auch Spinner Items fassen. Diese Spinner Items haben natürlich einen OnItemSelectedListener, und die Methode onItemSelected springt andauernd an, auch ohne das ich auf eins der Items klicke. Zum prüfen mache ich bei sowas immer einen Toast hinein, diesen erkennt man am schnellsten.


    Hier mein NavigationDrawer und ganz oben ein SpinnerItem...
    [Blockierte Grafik: http://preview.slick.pics/FT0ay9z45.png]


    der Listener springt zum Beispiel an sobald die App gestartet wird, ich vermute sobald der NavigationDrawer erstellt wird. Desweiteren springt er an wenn ich im NavigationDrawer nach unten un wieder hoch scrolle ( ich habe sehr viele Einträge ), also sobald das SpinnerItem nach oben hinaus geschoben wird, und wieder herein kommt.


    Das alles ist natürlich ziemlich nervig, da diese Items ja irgendwann Activities starten oder Fragmente tauschen.


    Hier mein Code...


    Ich habe schon versucht einen OnItemClickListener einzubauen, der Compiler bringt keine Fehler aber sobald ich dann meine App starte, crasht diese mit dem Fehler das man mit einem Spinner kein OnItemClickListener verwenden kann.


    Wie kann ich es also erreichen das meine Einträge im Spinner nur bei einem Click darauf das machen was sie sollen?


    LG proto

    Ich tendiere jedenfalls zu den Fragmenten. :)

    Langsam gefallen mir die Dinger auch immer besser, hab ein paar Tutorials vom Herrn Vogella gemacht, und schon ist diese ganze Welt etwas klarer. B-)



    BTW: Du brauchst die Navigation aber nicht immer. Wenn Du beispielsweise Details anzeigen lassen möchtest, die in einer neuen Activity aufpoppen, dann kann es durchaus sinnvoll sein, den Nutzer das Ding erst beenden zu lassen, bevor er wieder navigieren kann.

    Ja das stimmt, bei so Sachen macht das wirklich einen Sinn.



    Ist es denn wirklich machbar und evtl. auch empfehlenswert eine komplette App mit nur der MainActivity als einzige Activity zu bauen? und sonst nur Fragmente zu beutzen?

    Hey folks,


    eigentlich nur eine kurze Frage dazu... In meiner MainActivity habe ich einen NavigationDrawer eingebaut, dieser funktioniert tadellos. Jetzt habe ich nach einem klick auf ein ListItem des Drawers eine neue Activity starten lassen, und "oh Verwunderung" ich kann in dieser Activity meinen Drawer nicht mehr benutzen, naja er hängt ja auch an meiner MainActivity :P


    Mir schweben 2 Ansätze für dieses Problem vor:


    1. ich starte überhaupt keine neue Activity und versuche meine komplette App mit Fragmenten zu bauen. Stelle ich mir sehr schwer vor, aber evtl. denkbar.


    2. ich übergebe ( falls das möglich ist ) meinen NavigationDrawer von der MainActivity an die Activity die gestartet wird, und kann ihn dann evtl dort ebenfalls nutzen.


    Was sagt ihr dazu? Oder habt ihr vielleicht einen ganz anderen Ansatz dazu?


    LG proto

    oh WTF ! Wie geil, das wäre echt super nett von Dir.


    du programmierst auch noch iOS ?? :-X krass.


    Ich arbeite im Geschäft mit Mercurial, und TortoiseHg... dürfte also nicht so einfach sein das bei GitHub zu uppen. Aber ich könnte mir das mal anschauen was ich dafür alles brauche und machen muss.

    Was geht an fragmentManager.executePendingTransactions() denn nicht?

    Oh sorry, stand total auf dem Schlauch :P ^^ ^^



    Auf jeden Fall schafft er es nun den ViewPager zu finden, läuft aber bisl später in eine Exception rein, bei...getListView().setItemChecked()


    und zwar genau in der ListFragment Klasse bei... getView()


    Also entweder ist der Weg zu einer komfortablen App sehr steinig und ich muss immer wieder solche schwierigkeiten umschiffen, oder ich befinde mich einfach nur auf dem Holzweg und habe einen total falschen Ansatz.


    Noch eine Frage am Rande, eigentlich sollten Fragmente den Activities sehr ähnlich sein, bin ich dann der einzige der irgendwie Schwierigkeiten hat mit Fragmenten zu arbeiten? Wenn ich mit Activities arbeite ist jede für sich wie eine kleine "Sandbox", dort kann ich alle möglichen Sachen anstellen (weitere Activities starten, Fragmente erzeugen und anzeigen, Fragmente austauschen, usw...).
    Habe ich ein Fragment tue ich mir aber irgendwie schwer von dort als Startpunkt weitere tolle Funktionen zu nutzen...

    Ich bin aber nach wie vor der Meinung, dass ein Neuerstellen der Pager nach Auswahl eines Items der nicht so ganz korrekte Ansatz ist. ;)

    Diese Methode hab ich nach deinem Rat auch verworfen, es geht sozusagen um die Erstinitialisierung des FragmentPagers. Nach dem Klick auf ein Item, sollte das neue Fragment zusammengebaut und darauf der FragmentPager erstellt werden.


    EDIT:
    Die Methode ".executePendingTransactions();" kennt er nicht ;(

    Frag doch einfach den Debugger, der beißt nicht. :)

    Klasse ^^ ^^ ^^ ^^ Aber ich bin wohl im Umgang damit noch nicht so geübt wie manch anderer. Ich lass ihn laufen und taste mich step by step vor, wenn er dann crasht schau ich mir die Fehlerausgaben an, bzw. starte ihn neu und schaue die Variablen kurz vorm crash an.



    Ich vermute ganz stark das es damit zusammen hängt das auf dem Tablet beide Fragmente (A, B) immer zu sehen sind und deshalb kann ich mir mit findViewByID den ViewPager holen. Aber beim Phone ist das zweite Fragment (B) noch nicht zu sehen! deshalb wird sehr wahrscheinlich findViewByID nix finden.



    Wenn ich ein Item aus der Liste wähle -> ins if läuft er beim Tablet rein, ins else beim phone


    in beiden Fällen wird ein SiteFragment erstellt...


    dieses wiederum inflatet mein site_view


    auf dem sich mein @+id/pager befindet.
    Wie könnte ich also dieses zeitliche Problem umgehen und erst dann nach dem ViewPager fragen wenn das Fragment auch wirklich aufgebaut ist?