Problem mit Button und Listenern

  • Antworten:4
  • Bentwortet
Lars
  • Forum-Beiträge: 13

20.07.2013, 07:42:33 via Website

Hallo,
ich bin auf das Forum hier gestoßen und wollte euch direkt mal mit meinen problemen belästigen.
Unzwar binn ich noch sehr neu bei der Android entwicklung, habe aber schon Vorkentnisse durch anderen Hochsprachen.

Nun zu meinem problem:
Ich möchte gerne zum rumspielen einen Taschenrechner schreiben.
Das hat auch soweit funktioniert, allerdings möchte ich sie optimieren. Es geht darum das ich dei bafrage der Buttons anders machen möchte , unzwar mit einer switch anweisung.
Das funktioniert aber nicht so richtig, der listener für das ganze wird garnicht aufgerufen.
hier mal mein Code:
1package com.example.taschenrechnerapp;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.view.Menu;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.widget.EditText;
9
10public class MainActivity extends Activity implements OnClickListener {
11 private EditText werteAnzeige;
12
13 @Override
14 public void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16
17 setContentView(R.layout.activity_main);
18
19 werteAnzeige = (EditText)findViewById(R.id.anzeigeWerte);
20
21 }
22
23@Override
24public boolean onCreateOptionsMenu(Menu menu) {
25 // Inflate the menu; this adds items to the action bar if it is present.
26 getMenuInflater().inflate(R.menu.main, menu);
27 return true;
28}
29
30@Override
31public void onClick(View v) {
32 switch(v.getId()){
33 case R.id.button_add:
34 werteAnzeige.setText("Add");
35 break;
36
37 case R.id.button_sub:
38 werteAnzeige.setText("Sub");
39 break;
40
41 case R.id.button_result:
42 werteAnzeige.setText("Result");
43 break;
44 }
45}
46}

Das ist jetzt eine abgespeckte version von dem ganzen teil um zu zeigen worum es hauptsächlich geht.
ich habe auch schon versucht test funktionen in der Funktion des listener zu plazieren welche aufgerufen werden müsse, werden sie aber nicht.

Antworten
LitteM
  • Forum-Beiträge: 141

20.07.2013, 10:12:54 via Website

Ich hoffe ich hab das jetzt nicht übersehn, aber wo ist denn bitte der Button in deinem Code?

Dir fehlt in der onCreate sowas wie:

1Button doSomething= (Button)findViewById(R.id.Button1);
2doSomething.setOnClickListener(this);

Lars

Antworten
Christian
  • Forum-Beiträge: 307

20.07.2013, 10:16:11 via Website

Hi Lars,

der Button wird nicht automatisch mit dem Interface - OnClickListener verknüpft.

Das müsste dein Problem beheben:

1Button button1 = (Button)findViewById(R.id.Button_1);
2button.setOnClickListener(this);

Was für dein Problem aber besser geeigent wäre ist wenn du in deiner Layout-XML jeden Button die Klick-Funktion zuweist dann kannst dir den Spass mit dem Listener sparen.

Ein Beispiel dafür findest du in der Developer Doku

Mfg Christian

EDIT: mmhh ein bissel zu spät...naja auch egal..doppelt hält besser :D

— geändert am 20.07.2013, 10:17:29

Lars

Antworten
LitteM
  • Forum-Beiträge: 141

20.07.2013, 10:21:15 via Website

Macht doch nichts. Auf den Gedanken alle Buttons in dem Layout auf den Listener zu setzen kam ich bisher auch noch nicht. Danke für die Info - werde das vielleicht für mein Projekt so umbaun :)

Antworten
Lars
  • Forum-Beiträge: 13

20.07.2013, 10:27:18 via Website

Super Danke. Funktioniert 1A.
Jetzt muss ich mich nicht mehr für so schlimmen Code entschuldigen :grin:
Dann steht der App Entwicklung ja nichts mehr im Wege. Im laufe des tages kommt evt noch mal eine Frage über "master/detail flow"

Antworten