onClick -> onLongClick

  • Antworten:4
  • Bentwortet
Urs R.
  • Forum-Beiträge: 38

30.05.2017, 07:25:06 via Website

Hallo zusammen

Nachfolgend die Ausgangslage:

in der 'display.xml:

   <Button
    android:id="@+id/keySetup"
    style="@style/keyMap"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:longClickable="true" 
    android:onClick="onKeypadSetup"
    android:text="@string/key_setup"
    android:textColor="@color/orange"
    android:textSize="12sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@+id/key0"
    app:layout_constraintTop_toBottomOf="@+id/key1"
    app:layout_constraintVertical_weight="1" />

in der Main.java:

   public void onKeypadSetup(View view) {
    if (!editFlag) {
        editFlag = true;
        InputLine = "Setup";
    } else {
        editFlag = false;
        InputLine = "0";
    }
    showLine();
}

Mein Problem ist, dass ein versehentliches Berühren des Buttons das Setup-Display öffnet, sobald das editFlagg auf 'true' gesetzt wird. Die einfachste Methode wäre dem Button statt onClick ein onLongClick zu verpassen. longClickable="true" ist gesetzt, jetzt müsste ich das noch umsetzen können. Leider funktionert 'einfach' in diesem Fall so nicht und alles was ich zum Thema onLongClick finden konnte, ist weit entfernt von 'einfach'. Ich möchte nicht die halbe App umschreiben, nur um das setzen des editFlagg mit einem einfachen Click zu verhindern. Bin offen für einfache Lösungsvorschläge. :D

Antworten
swa00
  • Forum-Beiträge: 3.704

30.05.2017, 07:36:20 via Website

Hallo Urs,

du kannst jedem View einen ClickListener, LongClickListener oder TouchListener zuweisen.
Als Aufwand würde ich das allerdings nicht bezeichnen. AS baut dir sogar das Construct drumrum,
sobald du anfängst zu schreiben

Und dann bist du auch in der Lage, Kurze Clicks abzufangen und nicht zu verwenden oder im TouchListener
deine Zeiten selbst bestimmen

Mittels der Xml wird das nicht realisierbar sein ..

P.s

Ich möchte nicht die halbe App umschreiben, nur um das setzen des editFlagg mit einem einfachen Click zu verhindern

Ich kenne kein Projekt von mir , welches ich nicht schon X-Mal umgeschrieben habe ,damit es passt :-)

— geändert am 30.05.2017, 09:57:04

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Urs R.
  • Forum-Beiträge: 38

30.05.2017, 12:13:34 via Website

Es ist nicht einfach etwas zu Implementieren, von dem man keine Ahnung hat. Da kommt mir eine Werbung in den Sinn, die mir aus der Seele spricht:
Mit Ovomaltine kannst du es nicht besser, aber länger. ;)

Die gefühlt 30. Version den LongClick einzupflanzen, hat jetzt tatsächlich zum Erfolg geführt. Habe dabei wieder etwas gelernt, wovon ich zuvor noch keine Ahnung hatte.
Es ist nicht einfach nach der Lösung für ein Problem zu googeln, für das sich sonst niemand wirklich zu interessieren scheint. Schlussendlich habe ich in "Android, 2.A" den entscheidenden Hinweis gefunden, der mich zum Ziel geführt hat.

PS: Ich habe noch keine App fertig gebracht, ohne etliche Vorabversionen zu überarbeiten der ganze Codeteile komplett neu zu schreiben. Das gehört irgendwie dazu. Nur wenn etwas praktisch ausgereift und mehr oder weniger fertiggestellt ist, fällt es mir jeweils sehr schwer, nochmals grössere Änderungen daran vorzunehmen.

Antworten
swa00
  • Forum-Beiträge: 3.704

30.05.2017, 12:22:57 via Website

Woher sollen wir denn wissen , dass du 30+ Buttons hast ??

Die gefühlt 30. Version den LongClick einzupflanzen,

Das brauchst du doch gar nicht , wie kommst du darauf ?
Du kannst dir EINEN Clicklistener bauen , und den dann jeweils nur mir einer Zeile den
Buttons zuweisen .
Und in diesem fängst du dir dann die Werte ab.

30+ Buttons in einem Layout sind schon heftig, ich vermute mal du hast die in einem
Recycle/ListView .....
Wenn ja, dann solltest du dir dazu einen Adapter bauen und dieser beinhaltet dann NUR EINEN Clicklistener

P.s Kann das sein , dass du irgendwie von deinem Projekt "genervt" bist ? :-)

— geändert am 30.05.2017, 12:30:59

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Urs R.
  • Forum-Beiträge: 38

30.05.2017, 14:10:21 via Website

Da hast du wohl was missverstanden. Das waren 30 Versuche nur einem Button manieren beizubringen. :)
Das Eingabefeld hat nur 15 Keys (0 bis 9 und etwas Zubehör). Sieht aus wie ein Taschenrechner, der nicht rechnen kann. Dient nur zum Erfassen von Werten, die verschiedenen Datensätzen zugeorndet werden.

...und nein, bin absolut nicht genervt. Im Gegenteil. Da ich eigentlich nach wie vor Android-Greenhorn bin, hab ich auch noch entsprechend Spass an der Sache. Man sagt ja: deutsche Sprache, schwere Sprache. Android ist noch etwas schlimmer, wenn man kein englisch kann. :)

Antworten