2016-07-07 11 views
5

Ich bin ein bisschen neu in der Entwicklung von Android-Apps und weiß nicht, wie ich das debuggen kann. Also versuche ich EditText.setText in einem DialogFragment zu machen. Es gibt die richtige Zeichenfolge im Protokoll aus, zeigt aber immer noch die alte Zeichenfolge basierend auf der XML-Datei an ("Element hier eingeben"). Gibt es eine Möglichkeit, es zu aktualisieren?EditText setText wird nicht auf einem Dialogfragment angezeigt

public class MyAlertDialogFragment extends DialogFragment{ 
public MyAlertDialogFragment() {} 

public static MyAlertDialogFragment newInstance(String desc) { 
    MyAlertDialogFragment frag = new MyAlertDialogFragment(); 
    Bundle args = new Bundle(); 
    args.putString("desc", desc); 
    frag.setArguments(args); 
    return frag; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
    alertDialogBuilder.setView(R.layout.custom_dialog); 
    alertDialogBuilder.setTitle("Edit to-do list"); 

    final View layout = View.inflate(MainActivity.getAppContext(), R.layout.custom_dialog, null); 
    final EditText mEditText = (EditText) layout.findViewById(R.id.EditDesc); 
    String desc = getArguments().getString("desc"); 
    mEditText.setText(desc); 
    System.out.println("EditText is " + mEditText.getText().toString()); 

    alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // on success 
      EditTodoFragment.EditTodoFragmentListener listener = (EditTodoFragment.EditTodoFragmentListener)getActivity(); 
      listener.onFinishEditDialog(mEditText.getText().toString()); 
     } 
    }); 
    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    return alertDialogBuilder.create(); 
} 

}

Die Protokolldatei

07-06 21:04:20.738 4115-4115/com.example.light.todolist I/System.out: EditText is Doing grocery 

Die XML-Datei ist:

<TextView 
    android:layout_width="238dp" 
    android:layout_height="wrap_content" 
    android:text="Edit Item Below:" 
    android:id="@+id/EditTitle" 
    android:layout_weight="0.04" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/EditDesc" 
    android:text="Enter item here."> 
<requestFocus /> 
</EditText> 

Antwort

3

Sie nicht u Wählen Sie Layout-Ansicht für Dialog, damit Sie Text in EditText nicht sehen können. Bitte ändern, wie hier:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
    alertDialogBuilder.setTitle("Edit to-do list"); 

    final View layout = View.inflate(MainActivity.getAppContext(), R.layout.custom_dialog, null); 
    alertDialogBuilder.setView(layout); 
+0

Du hast Recht! Ich muss das Layout für setView verwenden, sonst erkennt es es nicht? – user3315093

2

Try this:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 

LayoutInflater inflater = getActivity().getLayoutInflater(); 
View customView = inflater.inflate(R.layout.custom_dialog, null); 

alertDialogBuilder.setView(customView); 
alertDialogBuilder.setTitle("Edit to-do list"); 

final EditText mEditText = (EditText) customView.findViewById(R.id.EditDesc); 
String desc = getArguments().getString("desc"); 
mEditText.setText(desc); 

alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // on success 
     EditTodoFragment.EditTodoFragmentListener listener = (EditTodoFragment.EditTodoFragmentListener)getActivity(); 
     listener.onFinishEditDialog(mEditText.getText().toString()); 
    } 
}); 
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
    } 
}); 

return alertDialogBuilder.create(); 
Verwandte Themen