2016-11-06 1 views
0

Ich habe Formular in meinem Dialogfeld implementiert, und wenn positive Schaltfläche angeklickt wird, erzeuge ich neues Objekt in einer Datenbank. Ich habe eine globale Variable für EditText erstellt, funktioniert aber immer noch nicht. Wo ich Text-Wert von ihnen bekommen möchte, bekomme ich immer leere Zeichenfolge.EditText in DialogFragment gibt immer leere Zeichenfolge zurück

hier ist der Code:

EditText name, desc;

@Override 
@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    view = inflater.inflate(R.layout.new_dialog, null); 

    name = (EditText) view.findViewById(R.id.workout_name); 
    desc = (EditText) view.findViewById(R.id.workout_description); 


    builder.setView(inflater.inflate(R.layout.new_dialog, null)).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      MyDbHelper helper = new MyDbHelper (getActivity()); 
      MyObj w = new MyObj(); 

      w.setName(name.getText().toString();); 
      w.setDescription(desc.getText().toString()); 
      w.setLevel(1); 

      long id = helper.createWorkout(w); 
      Toast.makeText(getActivity(), id+"", Toast.LENGTH_LONG).show(); 

      callback.onPositiveButtonClick(); 
     } 
    }).setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      callback.onNegativeButtonClick(); 

     } 
    }); 

    return builder.create(); 
} 

Irgendwelche Ideen bitte?

+0

nein, ich habe keine Ausnahmen – Aligator

Antwort

0

Im unteren Code, Sie sind new_dialog Layout aufgeblasen und Ihr Name und DESC EditTexts gehören zu diesem Layout.

Ansicht = inflater.inflate (R.layout.new_dialog, null);

name = (EditText) view.findViewById(R.id.workout_name); 
desc = (EditText) view.findViewById(R.id.workout_description); 

Aber wenn Sie das Layout des Dialogs setzen Sie new_workout_dialog setzen. Ihr Name und Desc gehören nicht zu diesem Layout.

builder.setView(inflater.inflate(R.layout.new_workout_dialog, null)) 

Außerdem, selbst wenn Sie new_dialog verwendet, während die Erbauer Ansicht Einstellung, Name und Abs würde immer noch irrelevant. Weil Sie innerhalb der setView Methode eine neue Ansicht erstellen.

die Ansicht Variable verwenden, wie folgend:

builder.setView(view, null)) 
+0

Leider ist es keine Probleme ... In App habe ich denselben Namen ... Das habe ich nur auf Stapel Website bearbeitet . – Aligator

+0

Lies meine Antwort letzten Aussagen. Auch wenn es ein Tippfehler ist, ist dein Code immer noch falsch. Sie erstellen eine neue Sicht in der Methode setView. Verwenden Sie die Ansichtsvariable, die Sie zuvor erstellt haben. –

+0

Oh ja! Ich vermisse das tut mir leid :) es funktioniert) Danke – Aligator

Verwandte Themen