Textinhalt mit EditText dynamisch ändern.

  • Antworten:7
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 5

28.03.2013 17:39:46 via Website

Hey Leute,
ich bin noch Anfänger was die Appentwicklung angeht und finde einfach keine Lösung für mein Problem.

Folgendes will ich erreichen:

Im Hauptlayout wird dieser Text angezeigt:

Hallo, ich bin Max.
Ich wohne in Musterstadt.

In einem 2. Layout (Bearbeiten) sind 2 Textfelder und ein Button.

Name: ________

Ort:___________

Button(Text überarbeiten).

Nachdem ich Name und Ort eingegeben und den Button geklickt habe soll die App wieder zurück zur Hauptseite springen und den geänderten Text anzeigen. Z.B:

Hallo, ich bin Kevin.
Ich wohne in Berlin.


Mein Ansatz war bisher wie folgt:

1hauptseite.xml
2
3<TextView
4 android:id="@+id/text"
5 ...
6 android:text="@string/textInhalt" />
7
8bearbeiten.xml
9
10<EditText
11 android:id="@+id/name"
12 ...
13 android:inputType="text" />
14
15<EditText
16 android:id="@+id/ort"
17 ...
18 android:inputType="text" />
19
20<Button
21 android:id="@+id/button"
22 ...
23 android:onClick="ButtonKlick" />
24
25strings.xml
26
27<string name="textInhalt"> Hallo, ich bin Max.\nIch wohne in Musterstadt.</string>
28
29MainActivity.java
30
31public void ButtonKlick (View view){
32
33 String ort;
34 String name;
35 String neuerText;
36
37 EditText FeldName = (EditText)findViewById(R.id.name);
38 EditText FeldOrt = (EditText)findViewById(R.id.ort);
39
40 TextView Text = (TextView)findViewById(R.id.text);
41
42 name = FeldName.getText().toString();
43 ort = FeldName.getText().toString();
44
45 neuerText = "Hallo, ich bin "+name+".\nIch wohne in "+ort"."
46
47 Text.setText(neuerText);
48
49 setContentView(R.layout.hauptseite);
50}

Sobald ich aber auf den Button drücke stürzt die App ab.
Und der Inhalt(Value) vom String "textInhalt" kann ja auch nicht dynamisch verändern.

Hoffe ihr könnt mir weiterhelfen!

LG
  • Forum-Beiträge: 16

28.03.2013 18:32:44 via App

Also normalerweise müsstest du das mit einer 2ten aktivity machen. und dann könntest du mit startactivityforresult dir die daten zurück geben oder du nutzt den aktionmode
Gruß

— geändert am 28.03.2013 18:33:24

  • Forum-Beiträge: 1.727

28.03.2013 18:46:04 via Website

Was ist den mit aktionmode hier gemeint bitte ?

Du kannst das mit z.b startActivityForResult starten, damit kannst du dir die Daten zurück geben wenn du z.b finish in der zweiten Acitvity aufrufst.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

  • Forum-Beiträge: 5

29.03.2013 11:34:14 via Website

Ich habs hinbekommen!

1. Den "String: neuerText" ausgelagert und direkt zu Beginn in der mainActivity deklariert.

2. TextView Text = (TextView)findViewById(R.id.text); und Text.setText(neuerText); in die onCreate() kopiert, um den Orginaltext am Anfang darzustellen

3. In der ButtonKlick() die Codereihenfolge geändert in:

setContentView(R.layout.hauptseite);

TextView Text = (TextView)findViewById(R.id.text);
Text.setText(neuerText);


Und schon gings! Sicher nicht die optimale Lösung, aber für meine Zwecke reichts :)
Ob und wie das Ganze mit startactivityforresult funktioniert, werde ich auch noch rausbekommen.

Danke euch trotzdem für die schnellen Antworten.
Gruß Kevin
  • Forum-Beiträge: 304

29.03.2013 14:34:54 via Website

setContentView dauernd aufzurufen ist ein sehr schlechter Weg
  • Forum-Beiträge: 5

29.03.2013 23:18:18 via Website

Ich bin gerne gewillt diesen "schlechten Weg" zu umgehen, wenn mir jemand grob erklärt wie das mit dem startActivityForResult funktioniert.
Bin bisher nicht schlau daraus geworden.
  • Forum-Beiträge: 304

30.03.2013 09:57:47 via Website

Lies dir bitte die Grundkonzeptionen von Android durch. Besonders was eine Activity ist, wie der Lifecycle dieser ist, wie du eine startest...

Wenn du das nicht willst, hat es auch keinen Sinn dir irgendetwas zu erklären, da du ja nicht lernwillig bist