Problem mit Anzeige eines Strings in einer neuen View

  • Antworten:7
Alkahna
  • Forum-Beiträge: 7

23.05.2011, 12:26:49 via Website

Hallo an alle,

ich hab mich ma an meine erste Android App gesetzt.
Aber so einfach wie es scheint ist es irgendwie nicht.

Zur Situation:

Wenn ich die App öffne, bekomme ich:
- mehrere Textfelder
- einen Button
- es werden IP/Subnetzangaben in die Textfelder eingetragen
- über den Button sollen dann die Subnetze berechnet werden.

Die Berechnung läuft ohne Fehler.
Nun bin ich an dem Punkt, wo ich das Ergebnis anzeigen möchte.

Ich habe ein separates Layout erstellt, mit einem Textfeld, in dem dann das Ergebnis stehen soll.

Soweit so gut.

zum Code:

1public class SubnetCalc extends Activity implements android.view.View.OnClickListener {
2 /** Called when the activity is first created. */
3
4 private Button berechnen;
5
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.main);
9 berechnen = (Button)findViewById(R.id.berechnen);
10 berechnen.setOnClickListener(this);
11
12 }
13
14public void onClick(View v) {
15
16String ergebnis;
17TextView txt_erg = (EditText) findViewById(R.id.erg);
18
19// ...
20
21// ...
22
23ergebnis = berechnen(Integer.parseInt(txt_anz_sn.getText().toString()));
24 startActivity(new Intent(this, ShowErg.class));
25 txt_erg.setText(ergebnis);
26 setContentView(txt_erg);
27
28// ...
29}
30}

eigentlich sollte das neue "Fenster" angezeigt werden und anschließend der Text des Strings ergebnis in das Feld txt_erg eingetragen werden
aber stattdessen passiert bei genau dieser Zeile:

txt_erg.setText(ergebnis);

folgendes:


Mein Code für die Activity, die das Ergebnis anzeigen soll sieht so aus:
1package subnet.calc;
2
3import android.app.Activity;
4import android.os.Bundle;
5
6public class ShowErg extends Activity {
7
8 public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.erg);
11 }
12}
und folgenden Eintrag im Android Manifest hab ich auch gesetzt:
1<activity android:name=".ShowErg"
2 android:label="@string/app_name">
3 </activity>

Hat da jmd ne idee, wie ich das neue Fenster aufrufen und mein Ergebnis in die TextView schreiben kann??

mfg Alkahna

Antworten
Stefan S.
  • Forum-Beiträge: 560

23.05.2011, 14:54:08 via Website

Du musst den Wert an den Intent mittels
Intent intent =new Intent(this, ShowErg.class));
intent.putExtra("Ergebnis_ID", ergebnis);
startActivity(intent);

In deinem neuen Fenster dann den Wert auslesen
Bundle extras = getIntent().getExtras();
if (extras != null) {
String ergebnis=
extras.getString("Ergebnis_ID");

Das Ergebnis kannst Du dann in deine TextView geben.

Antworten
Alkahna
  • Forum-Beiträge: 7

24.05.2011, 10:30:31 via Website

hi

danke für die Hilfe, hab das ma probiert.

Hier der Code zum aufrufen der zweiten Activity im OnClickListener eines Buttons:
1Intent intent = new Intent(SubnetCalc.this, ShowErg.class);
2 intent.putExtra("identifier", ergebnis);
3 startActivity(intent);

Hier der Code der zweiten Activity:
1package subnet.calc;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.widget.TextView;
6
7public class ShowErg extends Activity {
8
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.erg);
12 TextView txt_erg = (TextView) findViewById(R.id.erg);
13 Bundle extras = getIntent().getExtras();
14 if (extras != null) {
15 String ergebnis = extras.getString("identifier");
16 txt_erg.setText(ergebnis);
17 }
18 }
19}

Der Code des OnClickListeners läuft bis zum Ende durch und dann kommt der Fehler:


Keine Ahnung woran das liegt, hat jmd noch ne idee??

mfg Alkahna

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

24.05.2011, 10:51:03 via Website

Ich sehe da keinen Fehler :)
Eclipse zeigt dir lediglich den Editor für View.class an, zu dem kein Source Code existiert.
So sieht das immer aus, wenn du versuchst eine kompilierte Klasse in Eclipse anzuzeigen (es sei denn, du hast einen Decompiler).

Antworten
Alkahna
  • Forum-Beiträge: 7

24.05.2011, 12:03:59 via Website

hm wenn da kein Fehler ist, warum bekomme ich die 2. Activity nicht angezeigt?

der Bildschirm wird schwarz und das wars.....
irgendwas muss da doch noch sein, sonst würde ich ja mein Ergebnis angezeigt bekommen.

mfg Alkahna

Antworten
Stefan S.
  • Forum-Beiträge: 560

24.05.2011, 12:10:08 via Website

Hast Du die neue Klasse im Manifest eingetragen?

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

24.05.2011, 12:13:36 via Website

Also laut dem Screenshot ist die Ausführung an einem Breakpoint und ANGEHALTEN !
Da steht "Thread suspended".

Du musst den Debugger weiterlaufen lassen (grüner Pfeil), damit das Programm fortgesetzt wird.

— geändert am 24.05.2011, 12:24:34

Antworten
Alkahna
  • Forum-Beiträge: 7

24.05.2011, 14:22:47 via Website

du hast recht ;) super dann hats doch geholfen.

nochmal danke an alle.

mfg Alkahna

Antworten