1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. cz3kit, 13.04.2010 #1
    cz3kit

    cz3kit Threadstarter Neuer Benutzer

    Hallo an alle, ich habe mir heute mal alles runtergeladen, damit ich was für Android entwickeln kann. Ich dachte mir mal zum start, einfach mal TicTacToc zu programmieren, ich bin aber auf ein Problem gestoßen wo ich erst mal nicht weiter komme. Ich habe 9 Buttons und alle sollen einen onClickListner bekommen. Ich will den Listner so schreiben, dass alle 9 Buttons diesen nutzen können.

    Mein Problem ist jetzt, wie schreibt ich das, dass ich weiß welcher Button gedrückt wurde??
    Also User Brückt Button1 und im Hintergrund weiß mein Listner, "Aha, Button1 wurde gedrückt!"

    Ich hoffe ihr könnt mir helfen.

    MfG

    cz3kit
     
  2. Fr4gg0r, 13.04.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    die Standard Buttons haben eine Methode setOnClickListener();
    Nachdem du deine ganzen Button instanziirt hast:
    Code:
    Button b1 = (Button) findViewById(R.id.button1);
    Button b2 = (Button) findViewById(R.id.button2);
    ...
    fügst du einen neuen onClickListener hinzu:
    Code:
    OnClickListener click = new OnClickListener(){
       public void onClick(View v){
          switch(v.getId()){
          case R.id.button1: verrechneButton1();
          case R.id.button2: verrechneButton2();
          }
       }
    }
    onClick wird überschrieben, (kannst zur Übersicht @Override davorschreiben), und vom System aufgerufen, sobald ein Button gedrückt wurde, der diesem OnClickListener zugewiesen wurde.
    Anschließend setzt du diesen:

    Code:
    b1.setOnClickListener(click);
    b2.setOnClickListener(click);
    Edit:
    Wahrscheinlich wusstest du wohl einfach nichts von der Methode View.getId(); ...
     
    Zuletzt bearbeitet: 13.04.2010
  3. cz3kit, 13.04.2010 #3
    cz3kit

    cz3kit Threadstarter Neuer Benutzer

    Ich kann dir bis zum switch case folgen, aber ich verstehe nicht so recht dein "verrechneButton1". Ist das eine Methode oder was soll das darstellen?
     
  4. Fr4gg0r, 13.04.2010 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    jop, sie stellt einen Platzhalter für das dar, was du gerne berechnen/ausführen lassen möchtest, wenn der jeweilige Button gedrückt wurde.
     
  5. cz3kit, 13.04.2010 #5
    cz3kit

    cz3kit Threadstarter Neuer Benutzer

    Hmm, mein Problem ist gerade aber, wenn jemand auf z.B. Button1 drück, dann soll auf Button1 der Text "X" erscheinen und das nur auf Button1. Drückt der User aber Button2, dann wird das halt da gemacht. Verstehste was ich meine? Jede Methode für eig. die selbe Methode aus, muss aber auf sich referenzieren.
     
  6. Fr4gg0r, 13.04.2010 #6
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    kein Problem.

    Code:
    OnClickListener click = new OnClickListener(){
       public void onClick(View v){
          switch(v.getId()){
          case R.id.button1: b1.setText("Button 1 geklickt!");
          case R.id.button2: b2.setText("Button 2 geklickt!");
          }
       }
    }
    

    Zusätzlich müsstest du nun (glaub ich) b1 und b2 als final deklarieren.
     
  7. cz3kit, 13.04.2010 #7
    cz3kit

    cz3kit Threadstarter Neuer Benutzer

    Ich glaube ich habe jetzt einen Weg gefunden. Ich teste mal eben ob alles so läuft wie ich es mir Wünsche.

    Sag mal Fr4gg0r kommst du aus Bremen??
     
    Zuletzt bearbeitet: 13.04.2010
  8. cz3kit, 13.04.2010 #8
    cz3kit

    cz3kit Threadstarter Neuer Benutzer

    So das ganze sieht jetzt so aus:

    Code:
    private OnClickListener btnListener = new OnClickListener()
        {
            public void onClick(View v) {                        
                   switch(v.getId()) {
                   case R.id.Button01:changeButton(R.id.Button01); break;
                   case R.id.Button02:changeButton(R.id.Button02); break;
                   case R.id.Button03:changeButton(R.id.Button03); break;
                   case R.id.Button04:changeButton(R.id.Button04); break;
                   case R.id.Button05:changeButton(R.id.Button05); break;
                   case R.id.Button06:changeButton(R.id.Button06); break;
                   case R.id.Button07:changeButton(R.id.Button07); break;
                   case R.id.Button08:changeButton(R.id.Button08); break;
                   case R.id.Button09:changeButton(R.id.Button09); break;
                   }
            }
        };
    und noch die Methode changeButton

    Code:
    private void changeButton(int buttonid) {
            Button button = (Button)findViewById(buttonid);
            
            if (turn == true) {
                button.setText("X");
                turn = false;
            }else {
                button.setText("O");
                turn = true;
            }
            button.setClickable(false);
        }
    Es ist vieleicht nich die eleganteste Lösung, aber ich wollte damit heute einfach nur rumspielen und ma schaun mir das ganze gefällt. :p
     
  9. swordi, 13.04.2010 #9
    swordi

    swordi Gewerbliches Mitglied

    warum gibst du nicht dem button als id eine eine zahl von 0-9

    dann kannst du im onclicklistener

    changeButton(v.getID()) machen und schon sparst du dir einige zeilen :)
     
  10. Fr4gg0r, 13.04.2010 #10
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)


    Nee^^
    .........
     
  11. cz3kit, 14.04.2010 #11
    cz3kit

    cz3kit Threadstarter Neuer Benutzer

    wenn ich dich richtig verstanden habe dann meinst du das so oder??
    Code:
    public void onClick(View v) {                        
                   switch(v.getId()) {
                   case R.id.1:changeButton(R.id.1); break;
                   case R.id.2:changeButton(R.id.2); break;
                   case R.id.3:changeButton(R.id.3); break;
                   case R.id.4:changeButton(R.id.4); break;
                   case R.id.5:changeButton(R.id.5); break;
                   case R.id.6:changeButton(R.id.6); break;
                   case R.id.7:changeButton(R.id.7); break;
                   case R.id.8:changeButton(R.id.8); break;
                   case R.id.9:changeButton(R.id.9); break;
                   }
            }
    
    ahso, dachte wegen Abi Bemen in deiner Signatur :p
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung Freitag um 23:01 Uhr
[OFFEN] Probleme mit Action Floating Button Android App Entwicklung 27.05.2017
[ERLEDIGT] Frage zu den drawable-Ordnern Android App Entwicklung 20.05.2017
[ERLEDIGT] Buttontext per klick ändern Android App Entwicklung 14.03.2017
SnackBar Action Button wird nicht an den unteren Rand gesetzt Android App Entwicklung 07.03.2017
Und täglich grüßt die Quiz-App Frage (Vorgehensweise zur AppEntwicklung) Android App Entwicklung 15.02.2017
Frage zu Rekursives Ordner kopieren Android App Entwicklung 07.02.2017
Der Zurück-Button wird nicht angezeigt Android App Entwicklung 23.01.2017
Mail von Button aus mit Standard-Mail-App senden Android App Entwicklung 21.01.2017
Ein paar Fragen zu Permissions... Android App Entwicklung 18.01.2017