OnClickListener in eigener Klasse

  • Antworten:4
John Do
  • Forum-Beiträge: 36

05.04.2011, 14:44:03 via Website

Hallo,
ich habe mehrere Activities, welche alle aufeinander verweisen. Das ursprüngliche Programm funktioniert auch ohne Probleme! Es ist jedoch sehr umständlich alle ClickViews zuändern und x-mal den gleichen Code per Drag and Drop zu kopieren. Aus diesem Grund möchte ich alle Elemente in eine eigene Klasse auslagern.

1public class Startklasse extends Activity
2{
3public void onCreate(Bundle savedInstanceState)
4 {
5
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.startseite);
8 AufKnopfdruck xyz = new AufKnopfdruck ();
9 xyz.AufKnopf();
10
11 }
12...

1public class AufKnopfdruck extends Activity implements OnClickListener
2{
3
4 Button SucheButton;
5 Button EinstellungenButton;
6
7 public void AufKnopf ()
8 {
9 EinstellungenButton = (Button) findViewById(R.id.EinstellungenButton);
10 EinstellungenButton.setOnClickListener(EinstellungenOnClickListener);
11 SucheButton = (Button) findViewById(R.id.SucheButton);
12 SucheButton.setOnClickListener(SucheOnClickListener);
13 }
14
15 OnClickListener EinstellungenOnClickListener = new OnClickListener ()
16 {
17 @Override
18 public void onClick(View v)
19 {
20 startActivity(new Intent(AufKnopfdruck.this, Startklasse.class));
21 }
22 };
23
24...
25}

Auf die AufKnopfdruckklasse soll von allen Activities zugeriefen werden. Muss ich aus die jeweilige Klasse als Objekt in die AufKnopfklasse mitgeben, um in startAcitivity(...) an der Stelle AufKnopfdruck.this auf das Objekt zu verweisen? Bin wenigstens in Ansätzen auf dem richtigen Weg? Oder muss man solche Sachen über Vererbung bewerkstelligen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

05.04.2011, 16:28:47 via Website

Mach' Dir doch eine AufKnopfdruckActivity ...

1public class MyAufKnopfdruckActivity extends Activity implements OnClickListener

... und in Deinen "normalen" Activities verwendest Du dann diese:

1public class EineAufKnopfdruckActivity extends MyAufKnopfdruckActivity

Bei mir gibt es so gut wie keine Activity die tatsächlich von Activity/ListActivity/MapActivity abgeleitet ist. Das macht das Coden erheblich einfacher und übersichtlicher.

Gruß
Harald

Antworten
John Do
  • Forum-Beiträge: 36

08.04.2011, 15:19:32 via Website

Ok, Dank!
Leider passiert nichts.
1public class Startklasse extends AufKnopfdruck
2public void onCreate(Bundle savedInstanceState)
3 {
4
5super.onCreate(savedInstanceState);
6setContentView(R.layout.startseite);
7}
8}

1public class AufKnopfdruck extends Activity implements OnClickListener
2{
3Button SucheButton;
4Button EinstellungenButton;
5
6public void AufKnopf ()
7{
8EinstellungenButton = (Button) findViewById(R.id.EinstellungenButton);
9EinstellungenButton.setOnClickListener(EinstellungenOnClickListener);
10SucheButton = (Button) findViewById(R.id.SucheButton);
11SucheButton.setOnClickListener(SucheOnClickListener);
12}
13
14OnClickListener EinstellungenOnClickListener = new OnClickListener ()
15{
16@Override
17public void onClick(View v)
18{
19startActivity(new Intent(AufKnopfdruck.this, Startklasse.class));
20}
21};

Ich denke der Fehler liegt in der "Intent(AufKnopfdruck.this, ...)". Liege ich damit richtig? Oder muss ich Teile in die Activity verlagern?

Antworten
John Do
  • Forum-Beiträge: 36

09.04.2011, 14:04:49 via Website

Ok, ich habe eine mögliche Lösung. Hier nochmal der Code ohne package und import, sowie ohne xml-Datei und Manifest für die Nächsten. Vergesst nicht die Activities in die Manifestdatei einzutragen.

Die Klasse Suche erbt von der Aufknopfdruck und ruft die Methode oder den Konstruktor (bin mir an dieser Stelle nicht sicher) auf. Es handelt sich hier um eine der beiden Activities.
1public class Suche extends AufKnopfdruck
2{
3 @Override
4 public void onCreate(Bundle savedInstanceState)
5 {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.suche);
8
9 AufKnopf();
10 }
11}

Die Oberklasse beinhalte alle Funktionen des OnClickListeners.
1public class AufKnopfdruck extends Activity implements OnClickListener
2{
3 public Button KarteButton;
4 public Button GeschaefteButton;
5 public Button SucheButton;
6 public Button EinstellungenButton;
7
8 public void AufKnopf ()
9 {
10 SucheButton = (Button) findViewById(R.id.SucheButton);
11 SucheButton.setOnClickListener(SucheOnClickListener);
12 EinstellungenButton = (Button) findViewById(R.id.EinstellungenButton);
13 EinstellungenButton.setOnClickListener(EinstellungenOnClickListener);
14 }
15
16 OnClickListener SucheOnClickListener = new OnClickListener ()
17 {
18 @Override
19 public void onClick(View v)
20 {
21 startActivity(new Intent(AufKnopfdruck.this, Suche.class));
22 }
23 };
24
25 OnClickListener EinstellungenOnClickListener = new OnClickListener ()
26 {
27 @Override
28 public void onClick(View v)
29 {
30 startActivity(new Intent(AufKnopfdruck.this, Startklasse.class));
31 }
32 };
33
34 @Override
35 public void onClick(View v) {
36 // TODO Auto-generated method stub
37
38 }
39}

Antworten
Rene Risse
  • Forum-Beiträge: 1

27.05.2011, 21:54:53 via Website

was muss noch in die Manifestdatei eingetragen werden ??


PS: Bin neu in der Android Scene :-)

Antworten