Eingabe TextField Speichern - Button erzeugen

  • 7 Antworten
  • Letztes Antwortdatum
R

Radooni

Neues Mitglied
0
Hallo,

uch habe ein kleines/großes Problem und bin irgendwie auf dem Holzweg, da ich irgendwie nicht wirklich weiß, wie ich es realisieren soll. Also es geht um Folgendes:

Ich habe zwei Activities - Die eine Activity ist die sog. EingabeActivity:

PHP:
package speech;

import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class EingabeActivity extends Activity implements OnInitListener,OnClickListener{
	
	private TextToSpeech tts;
	Button eingabe;
	EditText tInputone;
	

	@Override
	public void onClick(View view) {
		
		switch (view.getId()){
		case R.id.eingabe:	
		EditText et = (EditText) findViewById(R.id.tInputone);
		tts.speak(et.getText().toString(),TextToSpeech.QUEUE_FLUSH, null);
                case R.id.save:	
		
		}
	}
	
	
	@Override
	public void onInit(int arg0) {
		tts.setLanguage(Locale.GERMAN);
		Button enter = (Button) findViewById(R.id.eingabe);
		enter.setOnClickListener(this);
		// TODO Auto-generated method stub
		
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.eingabe);
		tts = new TextToSpeech(this, this);
	}



}


Und die .xml wie folgt.

Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".StartActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/eingabett" />

    <EditText
        android:id="@+id/tInputone"
        android:layout_width="280dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="23dp" />

    <Button
        android:id="@+id/eingabe"
        android:layout_width="280dp"
        android:layout_height="40dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tInputone"
        android:layout_marginTop="28dp"
        android:text="Sag es!" />

    <Button
        android:id="@+id/save"
        android:layout_width="280dp"
        android:layout_height="40dp"
        android:layout_alignLeft="@+id/eingabe"
        android:layout_centerVertical="true"
        android:text="@string/saveButton" />

</RelativeLayout>

Die EingabeActivity besitzt ein TextField und zwei Button. Der eine Button realisiert eine TextToSpeech - Ausgabe und der andere Button soll dazu verwendet werden, den eingegebenen Text zu speichern.

Ich möchte, dass der Inhalt des Feldes in einer anderen Activity gespeichert wird (SavedActivity).

Wenn man auf "Speichern" drückt, soll ein Button in der SavedActivity erstellt werden, der den eingegebenen Text als TextToSpeech wiedergibt.

Beispiel:

Wenn ich jetzt in das TextField "Schöner Tag" eingebe und dann anschließend auf Speichern drücke, soll in der SavedActivity ein Button erzeugt werden, der, wenn man auf ihn klickt eben "Schöner Tag" sagt.


Ich hatte überlegt, das über SharedPrereferences zu veranstalten, doch bin daran gescheitert.

Deswegen wollte ich mich hier an die Comminity wenden. Ich hoffe, ihr versteht das Problem, welches ich euch versucht habe, zu schildern. Ich bin für jeden Lösungsvorschlag / Idee dankbar.
 
Zuletzt bearbeitet:
Wieso bist du mit SharedPreferences gescheitert?
Damit sollte man es ganz einfach lösen können.

Einfach in das SharedPreference ein String mit dem tag "tts" übergeben.
In der SavedActivity schaust du dann ob es ein Preference mit dem tag tts gibt oder ob dieser null ist. Wenn nicht -> Button anzeigen und daraus lesen.

Gruß
 
Ich glaube ich bin zu unfähig und blicke da nicht so ganz durch.

Ich habe jetzt folgendes Gemacht:

PHP:
import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class EingabeActivity extends Activity implements OnInitListener,OnClickListener{
	
	private TextToSpeech tts;
	Button eingabe;
	EditText tInputone;
	
	public static final String EINGABE = "Benutzereingabe";
	public static final int MODE = Context.MODE_PRIVATE;
	public static final String INPUT = "INPUT";
	

	@Override
	public void onClick(View view) {
		
		switch (view.getId()){
		case R.id.eingabe:	
		EditText et = (EditText) findViewById(R.id.tInputone);
		tts.speak(et.getText().toString(),TextToSpeech.QUEUE_FLUSH, null);
		case R.id.save:	
			
			String eingabeFeld = tInputone.getText().toString();
			if (eingabeFeld != null)
				putString(this, INPUT, eingabeFeld);
		}
	}
	
	
	public static void putString(Context context, String key, String value) {
		getEditor(context).putString(key, value).commit();

	}
	
	public static String readString(Context context, String key, String defValue) {
		return getPreferences(context).getString(key, defValue);
	}
	
	public static SharedPreferences getPreferences(Context context) {
		return context.getSharedPreferences(EINGABE, MODE);
	}

	public static Editor getEditor(Context context) {
		return getPreferences(context).edit();
	}
	
	@Override
	public void onInit(int arg0) {
		tts.setLanguage(Locale.GERMAN);
		Button enter = (Button) findViewById(R.id.eingabe);
		enter.setOnClickListener(this);
		// TODO Auto-generated method stub
		
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.eingabe);
		tts = new TextToSpeech(this, this);
	}



}


Wie sage ich jetzt der SavedActivity, dass beim Click ein Button erzeugt werden soll, der eben diesen Inhalt wiedergibt?
 
Ok ich glaube das mit den SharedPrefs klappt soweit.

Jetzt noch eine Frage:

Wie kann ich einen neuen Button erzeugen, wenn ich auf einen anderen Button klicke? Gibt es da eine Möglichkeit?
 
... was hast du denn schon probiert, und woran ist's gescheitert?
... hast du mal gegoogelt?
... was denkst du denn ist notwendig um einen neuen button zu erzeugen?
 
mcdt schrieb:
... was hast du denn schon probiert, und woran ist's gescheitert?
... hast du mal gegoogelt?
... was denkst du denn ist notwendig um einen neuen button zu erzeugen?


Ich bin schon ein paar Stunden am googlen.

Naja um einen neuen Button zu erzeugen, muss ich ja irgendwo definiert haben, wie der Button aussehen soll, wahrscheinlich in der XML.


Jetzt ist nur die Frage, wie , bzw mit welchem Code oder Funktion dies umzusetzen ist, dass auf den vorgefertigten Button zugegriffen wird und dieser dann anschließend in der Activity erzeugt wird.
 
ich glaube du solltest dich etwas in die thematik einlesen und die grundlagen lernen.

google mal nach "android sdk button zur laufzeit erzeugen", dort wirst du deine lösung finden.
 
Du musst keine Button im XML definieren.
Man kann auch dynamisch Buttons erzeugen und dem Layout hinzufügen:
Code:
Button bttn = new Button(context)
Damit hast du nun einen Button erstellt. Ist noch nirgends zu sehen.
Also musst du in dein Layout schauen und gucken wo dieser nun plaziert werden soll.
Zum beispiel in einem Linearlayout:
Code:
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
ll.addView(bttn);

So im groben und ganzen ;)

Gruß
 
Zurück
Oben Unten