Text ersetzen nach Buttonklick

  • Antworten:21
J.S.
  • Forum-Beiträge: 110

20.02.2014, 22:33:09 via Website

Hallo,

ich habe in meiner App einen Text stehen, der sich nach dem Drücken auf einen Button teilweise verändern soll. Bereits programmiert habe ich, dass nach dem Drücken auf den Button, der neue Text angezeigt wird. Aber wie bekomme ich es hin, dass der alte Text verschwindet? Kennt jemand den entsprechenden Code oder ein Tutorial, wo das zufälligerweise erklärt wird? Wäre sehr nett!

Beste Grüße
J.S.

— geändert am 20.02.2014, 22:39:09

Antworten
Michele
  • Forum-Beiträge: 1.525

20.02.2014, 22:50:08 via Website

Hallo.

Wie ersetzt du denn den neuen Text?
Eigentlich müsste der alte dann weg sein.


LG

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 09:50:13 via Website

Der alte Text wird nur überschrieben, verschwindet aber nicht?!

Beste Grüße
J.S.

Antworten
SvenDD
  • Forum-Beiträge: 272

21.02.2014, 10:47:57 via Website

Dann musst du evtl. den String auch ändern.

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 11:48:47 via Website

Wie meinst du das genau? Ich habe die Texte bisher immer direkt eingeschrieben und nicht über die strings.xml generiert. Ist das schlecht?

Antworten
SvenDD
  • Forum-Beiträge: 272

21.02.2014, 12:49:39 via Website

Eben das meine ich ja, dann musst du diesen String ändern.

Zeig mal den Code.

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 13:23:53 via Website

Den XML oder den Java Code?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.02.2014, 13:30:11 via App

Den Java Code bitte.

— geändert am 21.02.2014, 13:30:20

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Michele
  • Forum-Beiträge: 1.525

21.02.2014, 13:48:46 via Website

Naja zeige mal deinen Code.

Dann wird man ja sehen wie du es am besten machen solltest.


LG

— geändert am 21.02.2014, 13:50:22

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 13:52:59 via Website

Ja, irgendwo muss ich wohl den Befehl angeben, dass der alte Text gelöscht werden soll. Nur weiß ich nicht, wie dieser Befehl funktioniert

1package com.example.testapp;
2
3import android.os.Bundle;
4import android.app.Activity;
5import android.view.Menu;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.view.animation.Animation.AnimationListener;
9import android.widget.Button;
10import android.widget.TextView;
11
12public class MainActivity extends Activity implements OnClickListener {
13
14 public Button btn;
15 public TextView tw;
16
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21
22 btn = (Button)findViewById(R.id.BtnKlick);
23 tw = (TextView)findViewById(R.id.Text);
24
25 btn.setOnClickListener(this);
26 }
27
28 @Override
29 public boolean onCreateOptionsMenu(Menu menu) {
30 // Inflate the menu; this adds items to the action bar if it is present.
31 getMenuInflater().inflate(R.menu.main, menu);
32 return true;
33 }
34
35 @Override
36 public void onClick(View v) {
37 // TODO Auto-generated method stub
38
39 tw.setText("Android");
40
41 }
42
43
44}

— geändert am 21.02.2014, 13:55:40

Antworten
Michele
  • Forum-Beiträge: 1.525

21.02.2014, 13:54:59 via Website

Also eigentlich, wenn du "setText()" benutzt.

Da wird der Text gesetzt den du gesetzt hast.
Da bleibt nichts vom Alten übrig.
Ist das wirklich alles vom Code dann?


LG

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 14:00:28 via Website

Ja, das ist der gesamte Java-Code. Vllt habe ich aber auch einen Fehler im Layout gemacht, dass beide Texte nicht an der gleichen Stelle sind. Aber eigtl habe ich die gleichen Daten angegeben und der neue Text steht auch an der gleichen Stelle wie der Alte, nur dass der alte Text nicht gelöscht wird. Hier der Layout-Code:

1<Button
2 android:id="@+id/BtnKlick"
3 android:layout_width="wrap_content"
4 android:layout_height="wrap_content"
5 android:layout_centerHorizontal="true"
6 android:layout_centerVertical="true"
7 android:text="KlickMich" />
8
9 <TextView
10 android:id="@+id/textView1"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"
13 android:layout_alignParentTop="true"
14 android:layout_centerHorizontal="true"
15 android:layout_marginTop="40dp"
16 android:text="Eclipse"
17 android:textSize="70dp" />
18
19 <TextView
20 android:id="@+id/Text"
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:layout_alignParentTop="true"
24 android:layout_centerHorizontal="true"
25 android:layout_marginTop="40dp"
26 android:textSize="70dp" />

— geändert am 21.02.2014, 14:01:06

Antworten
Michele
  • Forum-Beiträge: 1.525

21.02.2014, 14:03:34 via Website

Erstmal muss man dich verstehen nun :D

Willst du in einem Text alles ersetzen und löschen oder in 2 Texten?

In der xml sehe ich 2 TextViews
und im Code nur einen angegeben.


So änderst du ja nur den
1android:id="@+id/Text"
laut Code.

— geändert am 21.02.2014, 14:03:49

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 14:08:54 via Website

Ich wollte, dass der Text android:id="@+id/textView1" durch den Text android:id="@+id/Text" ersetzt wird, wenn man auf den Button klickt. Das funktioniert auch alles, nur eben, dass der android:id="@+id/textView1" nicht verschwindet.

— geändert am 21.02.2014, 14:10:27

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.02.2014, 14:11:19 via Website

Dann

1btn = (Button)findViewById(R.id.BtnKlick);
2 tw = (TextView)findViewById(R.id.Text);
3
4 txt = (TextView)findViewById(R.id.textView1);
5
6//und in deiner OnClick
7
8txt.setText(tw.getTex());

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Michele
  • Forum-Beiträge: 1.525

21.02.2014, 14:11:20 via Website

Na du bist ja einer. :D
Warum sagst du das nicht gleich richtig?

Ist doch klar das das nicht so geht, wie dein Code geschrieben ist.

Sieht man doch selbst oder?
Dein textView1 sehe ich ja z.B nicht im Code.:D

@Pascal P.: Musst du immer gleich alles verraten :P


LG

— geändert am 21.02.2014, 14:11:54

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 14:21:05 via Website

Ach sorry, ich hatte den ID-Namen nur in Gedanken geändert, aber noch nicht in der Praxis. Jetzt klappt es, der alte Text verschwindet, wenn ich auf den Button klicke und der Neue erscheint. Allerdings wäre es mir lieb, wenn von dem ersten Text, nur der erste Buchstabe verschwindet und dafür ein neuer Buchstabe an der gleichen Stelle erscheint. Wie geht das denn?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.02.2014, 14:25:13 via Website

Kannste mit Substrings machen:
1String text1 = "hallo";
2String text2 = "bello";
3
4String result = text2.substring(0,1) + text1.substring(1);
5
6//im result steht dann "ballo"

— geändert am 21.02.2014, 14:25:32

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
J.S.
  • Forum-Beiträge: 110

21.02.2014, 14:34:33 via Website

Wahrscheinlich erziele ich das gleiche Ergebnis, wenn ich einfach das Wort Eclipse durch tw.setText("Aclipse"); ändere. Dann wird ja auch nur der erste Buchstabe geändert?! Aber vielen Dank!!!!!

— geändert am 21.02.2014, 14:44:52

Antworten
J.S.
  • Forum-Beiträge: 110

22.02.2014, 15:39:06 via Website

Oder kann mir jmd einen Tipp geben, wie das mit den Substrings in meinem Fall funktioniert? Ich möchte, dass die ersten Buchstaben des Wortes Eclipse sich verändern, nachdem ich auf einen Button gedrückt habe. D.h. dass ich die Substring-Funktion nach dem "public void onClick" eintragen muss, oder? Und "tw.setText("Android");" kommt ganz weg. Aber wie füge ich die Substrings dann richtig ein, dass aus dem Wort Eclipse "Andipse" wird?

1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent" >
5
6 <Button
7 android:id="@+id/BtnKlick"
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"
10 android:layout_alignParentTop="true"
11 android:layout_centerHorizontal="true"
12 android:layout_marginTop="209dp"
13 android:text="Button" />
14
15 <TextView
16 android:id="@+id/Text"
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:layout_centerHorizontal="true"
20 android:layout_marginTop="60dp"
21 android:text="Eclipse"
22 android:textSize="70sp" />
23
24</RelativeLayout>

1package com.example.testapp;
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.Button;
9import android.widget.TextView;
10
11public class MainActivity extends Activity implements OnClickListener {
12
13
14 public Button btn;
15 public TextView tw;
16
17
18
19 @Override
20 protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.activity_main);
23
24 btn = (Button)findViewById(R.id.BtnKlick);
25 tw = (TextView)findViewById(R.id.Text);
26
27
28
29 btn.setOnClickListener(this);
30 }
31
32 @Override
33 public boolean onCreateOptionsMenu(Menu menu) {
34 // Inflate the menu; this adds items to the action bar if it is present.
35 getMenuInflater().inflate(R.menu.main, menu);
36 return true;
37 }
38
39 @Override
40 public void onClick(View v) {
41 // TODO Auto-generated method stub
42
43
44 tw.setText("Android");
45
46
47
48 {}}}

VG

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.02.2014, 16:21:29 via Website

Wenn das für alle Wörter Funktionieren soll, ist das ein bisschen schwieriger.
Wenn das nur die bestimmten Buchstaben sind dann benutzt du string#replace.
Sonst kannst du auch googlen so ein Beispiel wird's bestimmt geben.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
impjor
  • Forum-Beiträge: 1.793

22.02.2014, 17:22:13 via App

Du ließt erst den alten Text aus, dann veränderst du diesen und setzt dann den (neuen) Text in die TextView.
Du sagst, du willst die ersten Buchstaben verändern: Du könntest einfach mittels substring die letzten Buchstaben herausfinden und dann den String aus den neuen Buchstaben + den Rest des alten Textes zusammensetzen.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten