2016-07-07 15 views
5

Jestem trochę nowy w rozwoju aplikacji na Androida i nie wiem, jak to debugować. Więc próbuję zrobić EditText.setText na DialogFragment. Wydaje prawidłowy ciąg w dzienniku, ale wciąż pokazuje stary ciąg oparty na pliku .xml ("Tutaj wprowadź element"). Czy istnieje sposób na aktualizację?EditText setText nie wyświetla się w fragmencie okna dialogowego

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(); 
} 

}

Plik dziennika

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

pliku XML jest:

<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> 

Odpowiedz

3

Nie robić u se widok układu dla okna dialogowego, aby tekst nie był widoczny w EditText. Proszę zmienić jak tutaj:

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

Masz rację! Muszę użyć układu do setView, w przeciwnym razie go nie rozpozna? – user3315093

2

Spróbuj tego:

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(); 
Powiązane problemy