Inhalt eines EditText mit getText() herausziehen

  • 4 Antworten
  • Neuester Beitrag
Diskutiere Inhalt eines EditText mit getText() herausziehen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

Patpa

Neues Mitglied
Hallo Community!
hab in einem AlertDialog Fenster ein EditText Element in welches ich einen Speichernamen eingeben will um Daten zu exportieren. Hab eigentlich gedacht wäre eine einfache Sache aber bin jetzt doch verwirrt :confused2:
Hab mit Breakpoints mich mal an die Sache herangetastet. Wenn ich von Hand etwas in dieses EditTextfeld eingebe bekomme ich in meinen String nur "". Stelle ich jetzt aber im Layout vorab einen bestimmten Text ein welcher im EditTextfeld stehen soll wird dieser ohne Probleme übernommen.
Hier die definition in der Layout.xml.
Code:
<EditText
        android:id="@+id/exportname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="text"
        android:text="test" />
Über den Button
Code:
<Button
        android:id="@+id/ExportButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="ExportHandler"
        android:text="@string/ExportFile" />
Löse ich die Methode
Code:
public void ExportHandler (View view)
    {
        LayoutInflater inflat = this.getLayoutInflater();
        View exportView = inflat.inflate(R.layout.exportview, null);
        EditText exfilename;
        exfilename = (EditText) exportView.findViewById(R.id.exportname);
        filename = exfilename.getText().toString();
     }
aus. Woran könnte es den liegen, dass mein eingegebener Text nicht eingelesen wird mein fest eingestellter aber schon? hab auch mal versucht den voreingestellten text zu ändern aber dann übernimmt er trotzdem nur dass was in der layout.xml eingestellt wurde. Kann das vielleicht am AlertDialogfenster liegen? Wird das vielleicht irgendwie zurückgesetzt wenn ich die Methode aufrufe? Kenne mich da überhaupt nicht aus! sry ...
Hier vielleicht noch die Methode in der der AlertDialog aufgerufen wird.
Code:
private void showExport()
    {
    	LayoutInflater inflat = MainActivity.this.getLayoutInflater();
        View exportView = inflat.inflate(R.layout.exportview, null);
        AlertDialog.Builder bBuilder = new AlertDialog.Builder(MainActivity.this);
        bBuilder.setTitle("Export Filemanager");
   		bBuilder.setNegativeButton("Back", new DialogInterface.OnClickListener() 
   		{
   			public void onClick(DialogInterface dialog, int which) 
   			{
   				Toast.makeText(getApplicationContext(), "Applikation wird fortgesetzt", Toast.LENGTH_LONG).show();
   			}
   		}); 
   		bBuilder.setView(exportView);
   		bBuilder.create().show();
    }
Hoffe jemand hat eine Idee.
Gruß
Patpa
 
reneph

reneph

Dauergast
PHP:
exfilename = (EditText) exportView.findViewById(R.id.exportname);
filename = exfilename.getText().toString();
Du liest hier ja den Inhalt des EditText-Views direkt nach dem inflaten aus. Da hast du ja natürlich auch noch keinen Inhalt im EditText... Sprich, du musst erst da "exfilename.getText().toString()" ausführen, wo du schlussendlich den Inhalt brauchst und nicht direkt beim Erstellen eines Layouts.
 
P

Patpa

Neues Mitglied
Moment, heißt des etwa ich rufe zwei mal mein Fenster auf? einmal in der showExport() Methode und einmal im ExportHandler? will ich eigentlich gar nicht hab den Inflater in der im ExportHandler nur erstellt für den verweis auf auf den EditText weil ich nicht wusste wie man sowas noch machen kann. Wie kann man den noch einen Verweis auf ein Element in einer view erstellen?
 
reneph

reneph

Dauergast
Sorry, kanns dir nicht so genau sagen, weil ich nicht so ganz deine Code-Bröckchen zuordnen kann und auch garnicht ersichtlich wird, wann du bspw. den Wert des EditText-Views benutzt...

Beim inflaten deines Layouts für den AlertDialog kannst du doch bspw. so arbeiten:

PHP:
View exportView = inflat.inflate(R.layout.exportview, null);

final EditText exfilename = (EditText) promptsView.findViewById(R.id.exportname);
Aber ob das das ist, was du brauchst weiß ich nicht, da ich wie schon gesagt nicht weiß, wann und wo du auf den Wert des Feldes zugreifen willst.
 
P

Patpa

Neues Mitglied
Habs! danke für den Hinweis mit dem Inflater :) Hab
Code:
 EditText exfilename;
direkt unter der MainActivity definiert. Inder showExport() Methode also dort wo mein AlertDialogfenster geöffnet wird habe ich den verweis
Code:
exfilename = (EditText) exportView.findViewById(R.id.exportname);
eingefügt und zuletzt ziehe ich im ExportHandler
Code:
filename = exfilename.getText().toString();
den Inhalt heraus.
Nochmals Danke!!! hab mich den ganzen Tag daran aufgehängt ...