Buttons automatisch generieren lassen

  • Antworten:10
  • Bentwortet
mr1000
  • Forum-Beiträge: 86

04.08.2020, 03:02:50 via Website

Guten Morgen zusammen,

ich möchte gerne mir automatisch neue Buttons/Textviews generieren lassen, nur wenn ich die App ausführe, wird sie sofort beendet.

  Button myButton = new Button(getActivity());
            myButton.setText("Buttons");

            ConstraintLayout ll = (ConstraintLayout) view.findViewById(R.id.constrainLayout);
            ConstraintLayout.LayoutParams lp = new 
           ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, 
           ConstraintLayout.LayoutParams.WRAP_CONTENT);
            ll.addView(myButton, lp);

xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/constrainLayout"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".AbrechnungFragment">

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guidelineleft"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_begin="34dp" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guidelineright"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_end="34dp" />

   </androidx.constraintlayout.widget.ConstraintLayout>

Gruß,

mr1000

— geändert am 04.08.2020, 12:24:40 durch Moderator

Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.08.2020, 12:27:15 via Website

@Jokel: Das XML war hier im Forum falsch Formatiert, sodass es durch die Forensoftware ausgeblendet wurde.
Ich hab es mal angepasst und jetzt ist auch ein constraint layout sichtbar :)

Vlt muss man auch noch die Constraints setzen, siehe hier:https://stackoverflow.com/a/41671717/4975457

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

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.08.2020, 08:25:24 via Website

Hallo du hast überhaupt kein Layout erstellt.
ich sehe kein Widget CostrainLayout in deinem XML

<androidx.constraintlayout.widget.ConstraintLayout....

Die Id "constraintlayout" wird wohl nicht gefunden werden.

Auch wirst du in Java nicht nur die Höhe und Breite angeben müssen. Eigentlich die gleiche Dinge wie im XML.
Das was du in Java machst ist etwas für ein linearlayout.

Ps. Frage wo in welcher Methode machst du das findViewById?

Welche Fehler Meldung kommt den beim Absturz?

— geändert am 04.08.2020, 11:56:55

Hilfreich?
Pascal P.
Kommentieren
Beste Antwort
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.08.2020, 12:27:15 via Website

@Jokel: Das XML war hier im Forum falsch Formatiert, sodass es durch die Forensoftware ausgeblendet wurde.
Ich hab es mal angepasst und jetzt ist auch ein constraint layout sichtbar :)

Vlt muss man auch noch die Constraints setzen, siehe hier:https://stackoverflow.com/a/41671717/4975457

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

Hilfreich?
Kommentieren
mr1000
  • Forum-Beiträge: 86

04.08.2020, 14:45:20 via Website

Hallo Pascal,

ich habe es mal abgetippt nur funktioniert es auch nicht.

  //Button 1:
            Button button = new Button(getActivity());
            button.setText("Hello");
            button.setId(100);           // <-- Important
            layout.addView(button);
            set.connect(button.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, 
            ConstraintSet.BOTTOM, 0);
            set.connect(button.getId(),ConstraintSet.RIGHT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0);
            set.connect(button.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0);
            set.constrainHeight(button.getId(), 200);
            set.applyTo(layout);

mr1000

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.08.2020, 15:18:31 via Website

Ok wenn das layout wirklich so ist wie es im ersten Post ist sollte es gehen . Nur wird dann jedes Widget, View genau oben im Layout oben Angezeigt bei mehreren genau übereinander.
Da du keine Ackerpunkte Contrains definiert hast. Aber gehen müsste es.

Auf meine Frage in welche Methode du das machst hast du nicht geantwortet. Oder welcher Fehler kommt bei absturzt kommt auch nicht.

Ohne Fehlermeldung kommen wir hier nicht weiter.

Das du in einen Fragment bist ist mir auch klar nach den Aufruf von getActivirty() Nur mehr verrätst du uns nicht.

Ok das das Forum die Spitzen Klammern und somit auch ein teil deines Layout geschluckt hat habe ich nicht gleich gesehen. So wie es jetzt im ersten Post ist müsste es gehen.

Also gebe uns bitte auch angaben zum fehler und wo in welcher Methode du das machst
Ohne Code kommen wir hier nicht weiter.

Frage hast du überhapt das richtige Layout? Denn das wird in einen erste n poist das Problem sein.

wo in welcher methode bist du hast du dort auch die Variable "view"

zeige die gesamte methode.

— geändert am 04.08.2020, 15:31:09

Hilfreich?
Kommentieren
mr1000
  • Forum-Beiträge: 86

04.08.2020, 15:34:20 via Website

So ich habe das Problem gefunden!

Da kamen sich zwei Methoden in die Quere,deswegen ist die App immer abgestürzt.

Gruß,

m1000

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.08.2020, 15:46:47 via Website

Ps solltest du dich wie in dem Beispiel von Pascal in der onCreate befinden. Wird das in einem Fragment nicht gehen. Denn in der onCreate ist das Layout noch nicht geladen und dein frindviewbyid zum Layout wird da nicht erfolgreich sein.

Das Layout wird erst in der onCrateView geladen von dir mit den Inflater. Dort wird wahrscheinlich auch deine Variable “view“ das erste mal gesetzt.
Erst jetzt kannst du darauf zugreifen.

Ich denke lifecycle eines Fragment beachten.

Hilfreich?
Kommentieren
mr1000
  • Forum-Beiträge: 86

04.08.2020, 15:49:25 via App

Hallo Jokel,
das habe ich schon beachtet.

Gruß,

mr1000

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.08.2020, 15:54:16 via Website

Tool uns sowas wie

Da kamen sich zwei Methoden in die Quere,deswegen ist die App immer abgestürzt.

zusagen ohne genau zu erkären was der echte grund war.

Empfehlung für das nechte mal eine sinvolle Fehlermeldung geben. "ErrorLog"
Habe auch in meiner esten antword danach gefragt. Leider von dir keine Antwort.

— geändert am 04.08.2020, 16:03:54

Hilfreich?
Kommentieren
mr1000
  • Forum-Beiträge: 86

06.08.2020, 01:42:04 via Website

Hallo Jokel,
sorry ich habe das voll vergessen!

Die App ist immer abgestürzt, weil ich bei der For-Schleife einen Tippfehler hatte.

for(int i = 1; i>=NumberOfColumns; i++){ //Deswegen ist  die App abgestürzt.

Mit der For-Schleife lasse ich mir Edittext-Felder erstellen,weil ich habe mit Itext, eine Tabelle erstellt die
20 Spalten hat, nur brauche ich nicht immer die 20 Spalten.
So lasse ich mir auch nur so viele generieren wie ich auch benötigte.

Gruß,

mr1000

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

06.08.2020, 09:10:49 via Website

Hallo
Danke für deine Antwort.

aber da sind wir wieder bei dem Thema "ErrorLog" wenn du uns das gegeben hättest, hätten wir gewusst das es nicht an deinen Layout liegt. Sagte ich ja auch das dein Layout gehen müsste. zumindestens keinen Fehler wirft.
Auch das Erstelle der Button solte keinen Fehler werfen.

Deshalb auch die Frage nach der Fehlermeldung am Anfang. Worauf du leider nicht geantwortet hast.

— geändert am 06.08.2020, 09:38:19

Hilfreich?
mr1000swa00
Kommentieren