2016-07-07 26 views
5

Android uygulama geliştirme konusunda biraz yeniyim ve bunun nasıl hata ayıklandığını bilmiyorum. Bu yüzden bir DialogFragment üzerinde EditText.setText yapmaya çalışıyorum. Günlükte doğru dizeyi basar ancak yine de eski dizeyi .xml dosyasına ("Buraya girin") göre gösterir. Güncellemenin bir yolu var mı?EditText setText bir Dialog Fragment üzerinde görüntülenmiyor

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

}

günlük dosyası

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

xml dosyasıdır:

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

cevap

3

Sen u do not Dialog için sekme görünümü, böylece EditText'te metin göremezsiniz. Burada Lütfen değiştirin:

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

Haklısın! Düzenlemek için düzeni kullanmam gerekiyor, aksi halde, onu tanımayacak mı? – user3315093

2

bu deneyin:

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