Textfelder - Text ändern

  • Antworten:26
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 19:40:32 via Website

Ich möchte, dass der Benutzer Text in ein Textfeld eingibt und ein Dropdown menü (Spinner). Wenn er auf einen Button drückt, wird der Inhalt dann verarbeitet.
Wie kann ich das Textfeld und das Dropdownmenü auslesen und anschließend auf Knopfdruck den Verarbeiteten Text wieder ins Textfeld zurück schreiben?

gruß
AndroidDev

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

28.03.2014, 19:46:55 via Website

Was hast du denn bis jetzt?

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 20:31:19 via Website

Im wesentlichen habe ich eine Activity und ein layout mit einem textfeld, spinner und button.

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 20:43:05 via Website

public class myActivity extends Activity {
/** Called when the activity is first created. */
private EditText Textarea;
private Button Button01;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Textarea=(EditText) findViewById(R.id.Textarea);
Button01=(Button) findViewById(R.id.Button01);
String text=Textarea.setText(R.id.Textarea);
char ch;
textarea.addTextChangedListener(new TextWatcher(){
@Override
public void onTextChanged(CharSepuence s, int start, int before, int count){
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after){
}
@Override
public void afterTextChanged(Editible s)
}
}
}

Das habe ich in einem Android buch gefunden.
Es macht aber nicht wirklich sinn und ich weiß auch nicht, wie ich den textinhalt in einer variable speichern kann (string).
Wichtig ist auch das Schreiben(Textinhalt ändern)

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 20:45:52 via Website

muss es protected void sein oder kann es auch public void sein?

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

28.03.2014, 20:47:28 via Website

Ich weiss nicht was du meinst

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 20:49:18 via Website

EditText myText = (EditText) this.findViewById(R.id.myTextField);

// Setting the text:
myText.setText( "Hello World!" );

// "Reading" the text (printing it to stdout):
System.out.println( myText.getText() );

Ich dachte System.out.print funktioniert nur in Konsolenprogrammen am Computer.

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

28.03.2014, 20:50:46 via Website

Ne aber es wird dir nur im Debugmodus in LogCat ausgegeben.
D.h als Debugmeldung oder so reicht es aus.
Sonst kannst du auch eine ToastMessage auf dem Handy direkt anzeigen.

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 21:03:47 via Website

1public class MainActivity extends Activity {
2
3 private Button btn;
4 private EditText edit;
5 private Spinner spinner;
6
7 @Override
8 protected void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.layout_main);
11
12 btn = (Button) findViewById(R.id.button);
13 edit = (EditText) findViewById(R.id.edit_message);
14 spinner = (Spinner) findViewById(R.id.spinner);
15
16 btn.setOnClickListener(new View.OnClickListener() {
17 public void onClick(View view) {
18 Log.v("EditText", edit.getText().toString());
19 Log.v("Spinner", spinner.getSelectedItem().toString());
20 }
21 });
22
23 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.title_type, android.R.layout.simple_spinner_item);
24 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
25 spinner.setAdapter(adapter);
26 }
27}
stackoverflow.com/questions/13585664/read-a-text-value-and-spinner-value/13585778#13585778

Das sieht eigentlich ganz gut aus, aber wofür braucht man Log? was macht es?

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

28.03.2014, 21:07:27 via Website

Da wird halt alles was du willst reingeschrieben, für debugzwecke etc.

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 21:11:20 via Website

Ich möchte keine Ausgabe für DebugZwecke, sondern nur das textfeld auslesen, an eine varable übrgeben, verabeiten und in das textfeld zurückscreiben.

bytheway: kannst du eine gute Lektüre für Android programmierung empfehlen?

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 21:19:09 via Website

und wie benutze ich getText und setText?

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

28.03.2014, 21:25:52 via Website

Du hast eine EditText. Dann suchst du diese mittels findViewById im Layout.
Dann kannst du ggf. mittels EditText#getText() den text bekommen.
genauso beim set.

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 21:26:47 via Website

Bisher sieht es folgendermaßen aus:
1public class myActivity extends Activity {
2 /** Called when the activity is first created. */
3 private EditText Textarea;
4 private Button Button01;
5 private Spinner select;
6 @Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.main);
10 Button01 = (Button) findViewById(R.id.Button01);
11 Textarea = (EditText) findViewById(R.id.Textarea);
12 select = (Spinner) findViewById(R.id.select);
13 Button01.setOnClickListener(new View.OnClickListener(){
14 string text=Textarea;
15
16 }
17 }

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

28.03.2014, 21:28:31 via Website

String text = Textarea.getText();

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

28.03.2014, 21:38:14 via Website

Type mismatch: cannot convert from Editable to String
The type new View.OnClickListener(){} must implement the inherited abstract method View.OnClickListener.onClick(View)


Es wird vorgeschlagen String in Editible zu ändern, das macht aber keinen Sinn.
Außerdem wird View.OnClickListener nicht rivhtig erkannt.

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

28.03.2014, 22:06:32 via Website

Wie sieht der Code denn aus?

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

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

29.03.2014, 11:30:17 via App

AndroidDev
Bisher sieht es folgendermaßen aus:
1public class myActivity extends Activity {
2 /** Called when the activity is first created. */
3 private EditText Textarea;
4 private Button Button01;
5 private Spinner select;
6 @Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.main);
10 Button01 = (Button) findViewById(R.id.Button01);
11 Textarea = (EditText) findViewById(R.id.Textarea);
12 select = (Spinner) findViewById(R.id.select);
13 Button01.setOnClickListener(new View.OnClickListener(){
14 string text=Textarea;
15
16 }
17 }
Textarea Text: String text=Textarea.getText ( ). toString ( );
Und OnClickListener: Button01.setOnClickListener(new View.OnClickListener(){
@Override
public onClick ( View v ) {
/ / Anweisungen
}
} );

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

29.03.2014, 13:34:59 via Website

Das toString() könnte man auch weglassen, da EditText#getText() schon einen string returned.

— geändert am 29.03.2014, 13:35:08

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

Antworten
impjor
  • Forum-Beiträge: 1.793

29.03.2014, 14:02:53 via App

Pascal P.
Das toString() könnte man auch weglassen, da EditText#getText() schon einen string returned.
EditText#getText() liefert dir eine CharSequence, eine Super-Klasse von String. D.h. überall wo ein String benötigt wird, muss noch CharSequence#toString() aufgerufen werden.

Liebe Grüße impjor.

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

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

29.03.2014, 16:43:35 via App

Komisch ist richtig aber musst die methode noch nie benutzen.
Aber egal.

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

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

30.03.2014, 20:40:07 via App

Gut wie ist denn ein Ansatz fürs auslesen?

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

Antworten
AndroidDev
  • Forum-Beiträge: 13

04.04.2014, 16:24:33 via Website

Ich habe zwei verschiedene Lösungen im Internet gefunden.
Die eine definiert die Liste in einem String array, die andere definiert die Liste in "/res/values/string.xml".
Welche Lösung haltet ihr für die bessere. Wichtig ist auch: Ich möchte in der Liste am Bildschirm andere Bezeichnungen nehmen, als die Werte, die ich beim auslösen zurückbekomme. Ich brauche eigentlich integer Zahlen, das können z.B. einfach die Positionen in der Liste sein.

— geändert am 04.04.2014, 16:36:14

Antworten