Class in der Main Activity aufrufen

  • Antworten:4
  • Bentwortet
Gelöschter Account
  • Forum-Beiträge: 136

28.05.2011, 17:59:01 via Website

Hallo zusammen,

ich denke, dieser Thread wird schnell beantwortet sein, da mir eig. nur der richtige Begriff fehlt, nach dem ich suchen kann. Es geht darum, dass in meiner Main Activity bestimmte Dinge ablaufen sollen, ist ja klar, allerdings will ich dort nicht alles reinschreiben, da die Datei sonst riesig wird, was ziemlich schlecht wäre. Daher möchte ich bestimmte Dinge in einer eigenen java Datei auslagern und dann aufrufen.

Habe es nun so um die Klasse aufzurufen:

1register.set_registration();

Und so sieht set_registration aus:

1package de.identyfire.ideenfrische;
2
3import java.io.IOException;
4import java.io.UnsupportedEncodingException;
5import java.util.ArrayList;
6import org.apache.http.HttpResponse;
7import org.apache.http.NameValuePair;
8import org.apache.http.client.ClientProtocolException;
9import org.apache.http.client.HttpClient;
10import org.apache.http.client.entity.UrlEncodedFormEntity;
11import org.apache.http.client.methods.HttpPost;
12import org.apache.http.impl.client.DefaultHttpClient;
13import org.apache.http.message.BasicNameValuePair;
14import android.app.Activity;
15import android.app.AlertDialog;
16import android.content.DialogInterface;
17import android.view.View;
18import android.widget.Button;
19import android.widget.EditText;
20import android.widget.TextView;
21
22public class register extends Activity {
23 public void set_registration() {
24 setContentView(R.layout.register);
25
26 final EditText vorname_edit = (EditText)findViewById(R.id.vorname);
27 final EditText nachname_edit = (EditText)findViewById(R.id.nachname);
28 final EditText ort_edit = (EditText)findViewById(R.id.ort);
29 final EditText geburt_edit = (EditText)findViewById(R.id.geburt);
30 final TextView vorname_view = (TextView)findViewById(R.id.vorname_view);
31
32 Button submit = (Button)findViewById(R.id.submit);
33 submit.setOnClickListener(new View.OnClickListener(){
34
35 public void onClick(View v){
36 if(vorname_edit.getText().toString().equals("")){
37 AlertDialog.Builder dialog = new AlertDialog.Builder(register.this);
38 dialog.setMessage("Bitte füllen Sie das Feld 'Vorname' aus!")
39 .setCancelable(false)
40 .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
41 public void onClick(DialogInterface dialog, int id) {return;}});
42
43 dialog.show();
44 } else {
45 if(nachname_edit.getText().toString().equals("")){
46
47 AlertDialog.Builder dialog = new AlertDialog.Builder(register.this);
48 dialog.setMessage("Bitte füllen Sie das Feld 'Nachname' aus!")
49 .setCancelable(false)
50 .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
51 public void onClick(DialogInterface dialog, int id) {return;}});
52
53 dialog.show();
54
55 } else {
56 if(ort_edit.getText().toString().equals("")){
57
58 AlertDialog.Builder dialog = new AlertDialog.Builder(register.this);
59 dialog.setMessage("Bitte füllen Sie das Feld 'Ort' aus!")
60 .setCancelable(false)
61 .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
62 public void onClick(DialogInterface dialog, int id) {return;}});
63
64 dialog.show();
65
66 } else {
67 if(geburt_edit.getText().toString().equals("")){
68
69 AlertDialog.Builder dialog = new AlertDialog.Builder(register.this);
70 dialog.setMessage("Bitte füllen Sie das Feld 'Geburtsdatum' aus!")
71 .setCancelable(false)
72 .setNeutralButton("Ok", new DialogInterface.OnClickListener() {
73 public void onClick(DialogInterface dialog, int id) {return;}});
74
75 dialog.show();
76
77 } else {
78 vorname_view.setText(vorname_edit.getText().toString()+" "+nachname_edit.getText().toString()+" wurde am "+geburt_edit.getText().toString()+" in "+ort_edit.getText().toString()+" geboren und wurde erfolgreich von identyfire verifiziert!");
79
80
81 final HttpClient httpclient = new DefaultHttpClient();
82 final HttpPost httppost = new HttpPost("url");
83
84 final ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
85 nameValuePairs.add(new BasicNameValuePair("betreff", vorname_edit.getText().toString()+" "+nachname_edit.getText().toString()+" möchte verifiziert werden!"));
86 nameValuePairs.add(new BasicNameValuePair("gesamt", vorname_edit.getText().toString()+" "+nachname_edit.getText().toString()+" wurde am "+geburt_edit.getText().toString()+" in "+ort_edit.getText().toString()+" geboren und wurde erfolgreich verifiziert!"));
87
88 try {
89 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
90 final HttpResponse response = httpclient.execute(httppost);
91 System.out.println(response);
92 } catch (UnsupportedEncodingException e) {
93 // TODO Auto-generated catch block
94 e.printStackTrace();
95 } catch (ClientProtocolException e) {
96 // TODO Auto-generated catch block
97 e.printStackTrace();
98 } catch (IOException e) {
99 // TODO Auto-generated catch block
100 e.printStackTrace();
101 }
102 }
103 }
104 }
105 }
106 }
107 });
108
109 }
110}

Wenn ich set_registration auf static setze, würde es glaube ich gehen, allerdings nicht mehr mit den TextView etc.. Ich finde meine alten Java Dateien auch nicht mehr wieder um nachzuschauen, da java bei mir schon länger her ist ;)

Grundlegend geht es also darum, bestimmte Code-Zeilen auszulagern und dann später aufzurufen. Wonach kann ich da am besten suchen? Oder könnt ihr mit bzgl. meines Codes schon direkt einen Tipp geben?


Liebe Grüße,
Malte

— geändert am 28.05.2011, 19:56:27

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

28.05.2011, 18:07:16 via Website

Habs jetzt hinbekommen, nochmal im Hirn herumgegraben ;) Ist das auch richtig so?

In der Main Activity nehme ich das "extends Activity" und ersetzte es druch "extends register" und das funktionierte ;) Ist das auch "sauber"?

Grüße,
Malte

Antworten
Markus B.
  • Forum-Beiträge: 636

28.05.2011, 19:33:25 via Website

Malte Heyenga
Habs jetzt hinbekommen, nochmal im Hirn herumgegraben ;) Ist das auch richtig so?

In der Main Activity nehme ich das "extends Activity" und ersetzte es druch "extends register" und das funktionierte ;) Ist das auch "sauber"?

Grüße,
Malte

Hi,
das kannst du natürlich so machen, denn genau für diese Problemstellung gibt es das Wunder der Vererbung :)
Wenn ich dir noch einen kleinen Tipp geben darf:
Deine Methode onClick() ist schon ziemlich lang und somit bietet es sich hier an Funktionalität in Methoden auszulagern.
Das macht deinen Code übersichtlicher.

Gruß,
Markus

Gelöschter Account

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

28.05.2011, 19:37:08 via App

wie siehts dann aus, wenn ich aus der klasse hallo auch was in der main activity ausgeben möchte? Extenfs geht doch nur mit einem oder?

Danke für den Tipp, werd ich machen.

Grüße Malte

Antworten
Markus B.
  • Forum-Beiträge: 636

28.05.2011, 19:54:26 via Website

Hi,
richtig extends kannst du nur einmal pro Klasse nutzten. Wenn du wissen möchtest warum das so ist google mal nach Deadly diamond of death.
Wenn du aus der Klasse "hallo" auch etwas ausgeben möchtest, kannst du dir doch z.B. ein Objekt der Klasse in der Activity erzeugen. Oft ist es doch so das die Funktionalität der Klasse Input aus Benutzereingaben bekommt, diese dann verarbeitet und dann das result zurückgibt. Alternativ gits es ja noch Abstract Classes oder schau dir mal Typisierung von Klassen an. Du kannst da schon einiges machen. Die Frage ist halt immer was du mit der Auslagerung erreichen willst.
Üblicherweise lagerst du Code oft auf, da du diesen öfter verwenden willst oder einen Patter (z.B. Model / View / Controll) folgst. Nur weil es Klasse mal ein paar hundert Zeilen lang ist, musst du ja nicht anfangen wie verrückt Klassen zu erzeugen.

Gruß,
Markus

Gelöschter Account

Antworten