Problem Checkbox Android App

  • 11 Antworten
  • Letztes Antwortdatum
I

itraB

Neues Mitglied
0
Hallo,

leider habe ich weder hier noch über google passende Ratschläge gefunden:

Folgendes Problem: Durch das Anklicken/Aktivieren einer Checkbox sollen Marker gesetzt werde...Soweit so gut...nur wenn man die Checkbox unchecked verschwinden diese nicht...wie kann ich das Problem beheben?

Main_Activity

PHP:
public void bundesliga1 (View view){
      
      CheckBox checkBox1 = (CheckBox)view;
        
        if (checkBox1.isChecked()) {
            Marker muenchen1 = map.addMarker(new MarkerOptions()
            .position(MUENCHEN1)
            .title("FC Bayern München")
            .snippet("München | Allianz Arena (75.000)")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.muenchen1)));;
        } else {
            ;


                           }
       
 }

activity_main

PHP:
    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/toggleButton1"
        android:onClick="bundesliga1"
        android:text="1. Bundesliga"
        android:textColor="#444444" />

Vielen Dank schon mal für eure Tipps

Grüße

itraB
 
Die Marker Klasse hat eine remove() Methode.

Marker | Android Developers


Oder du könntest die komplette Karte löschen (map.clear()), und die benötigten Marker neu einfügen.


PS: Die 1. Bundesliga ist eingetragene Marke.
 
Hallo,

danke für die Antwort...werde ich gleich mal versuchen...

dass die Bundesliga eine eingetragene Marke ist weiß ich...die app dient nicht zur veröffentlichung sondern als Uni-Projekt.

Grüße

Der ursprüngliche Beitrag von 00:23 Uhr wurde um 00:28 Uhr ergänzt:

Ich stelle mich irgendwie gerade doof an...wie müsste denn in meinem Fall der Befehl nach ELSE lauten, um den Marker zu löschen?
 
niemand?
 
Ich habe mir dies bereits angeschaut, nur leider bekomme ich keinen funktionierenden Quelltext hin, der nach der ELSE Funktion auch wirklich arbeitet
 
PHP:
public void bundesliga1 (View view){
      
      CheckBox checkBox1 = (CheckBox)view;
        
         Marker muenchen1 = null;        
         if (checkBox1.isChecked()) {
            muenchen1 = map.addMarker(new MarkerOptions()
            .position(MUENCHEN1)
            .title("FC Bayern München")
            .snippet("München | Allianz Arena (75.000)")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.muenchen1)));;
        } else {
          if(muenchen1!= null){
            // remove single marker
            muenchen1.remove();
          }   
        }      
 }
oder

PHP:
public void bundesliga1 (View view){
      
      CheckBox checkBox1 = (CheckBox)view;
              
         if (checkBox1.isChecked()) {
            Marker muenchen1 = map.addMarker(new MarkerOptions()
            .position(MUENCHEN1)
            .title("FC Bayern München")
            .snippet("München | Allianz Arena (75.000)")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.muenchen1)));;
        } else {
          // clear complete map, removes all markers
          map.clear();   
        }      
 }
Beides ungetestet...sollte aber eigentlich gehen..
 
Naja ich habe letztes Jahr auch Probleme mit dem entfernen von markern gehabt wenn ich mich richtig erinnere... Eine Lösung hab ich dann nicht mehr gesucht xd weil war nur ba
 
ersteren klappt leider nicht (dead code) :/

den zweiten kannte ich schon, erfüllt aber nicht ganz den richtigen zweck...danke trotzdem
 
Edit:
Sooo, jetzt raff ich endlich wo die Dead Code Meldung herkommt.

Damit Du den Marker im ELSE benutzen kannst, musst Du ihn außerhalb des IFs definieren, ich hatte den dafür ja einfach nur mit = null nach oben geschoben und dabei nicht bedacht, dass nun JEDESMAL, wenn die Methode aufgerufen wird, der Marker wieder auf null gesetzt wird.

Also 2. Versuch:
PHP:
Marker muenchen1; // außerhalb der Methode als Instanzvariable

public void bundesliga1 (View view){
      
      CheckBox checkBox1 = (CheckBox)view;
             
      if (checkBox1.isChecked()) {
            muenchen1 = map.addMarker(new MarkerOptions()
            .position(MUENCHEN1)
            .title("FC Bayern München")
            .snippet("München | Allianz Arena (75.000)")
             .icon(BitmapDescriptorFactory.fromResource(R.drawable.muenchen1)));;
        } else {
          if(muenchen1!= null){
            // remove single marker
            muenchen1.remove();
          }   
}
 
Zuletzt bearbeitet:
man sollte die scope regeln immer beachten...gut dass du die lösung gepostet hast sowas kann schon mal passieren im eifer des gefechts.
 
Super hat nun alles geklappt...vielen lieben Dank :)
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.362
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
968
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.007
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
791
mkuz24
M
A
Antworten
5
Aufrufe
697
swa00
swa00
Zurück
Oben Unten