Inhalt eines EditText mit getText() herausziehen

P

Patpa

Neues Mitglied
0
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
 
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.
 
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?
 
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.
 
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 ...
 

Ähnliche Themen

A
  • Alex1978
Antworten
4
Aufrufe
816
Alex1978
A
B
Antworten
4
Aufrufe
470
bb321
B
FabianDev
Antworten
5
Aufrufe
548
swa00
swa00
Zurück
Oben Unten