Android Alert Dialog не может найти вид

У меня возникли проблемы с получением AlertDialog для передачи текста обратно в вызывающую его активность. Кажется, проблема заключается в том, что при вызове findViewByID не удается найти правильный EditText, но я новичок в Android и не знаю, почему это может быть.

Код ниже:

public class ModifyDialogFragment extends DialogFragment { /* The activity that creates an instance of this dialog fragment must * implement this interface in order to receive event callbacks. * Each method passes the DialogFragment in case the host needs to query it. */ public interface MDialogListener { public void onMDialogPositiveClick(String newValue); } // Use this instance of the interface to deliver action events MDialogListener mListener; String mEntryName = ""; EditText mEditText; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); final View modifyView = inflater.inflate(R.layout.modify_dialog, null); builder.setView(modifyView); final EditText editText = (EditText) getActivity().findViewById(R.id.modificationText); builder.setPositiveButton(R.string.modify, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { mListener.onMDialogPositiveClick(editText.getText().toString()); } }); builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); // Create the AlertDialog object and return it return builder.create(); } // Override the Fragment.onAttach() method to instantiate the ModifyDeleteDialogListener @Override public void onAttach(Activity activity) { super.onAttach(activity); // Verify that the host activity implements the callback interface try { // Instantiate the MDDialogListener so we can send events to the host mListener = (MDialogListener) activity; } catch (ClassCastException e) { // The activity doesn't implement the interface, throw exception throw new ClassCastException(activity.toString() + " must implement MDialogListener"); } } 

И соответствующий файл modify_dialog.xml:

 <?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/modificationText" android:inputType="text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginLeft="4dp" android:layout_marginRight="4dp" android:layout_marginBottom="4dp"/> 

Почему не найден текст editText? Что я могу сделать, чтобы сделать эту работу по назначению, передав новую строку в действие?

Solutions Collecting From Web of "Android Alert Dialog не может найти вид"

+ Изменить

 final EditText editText = (EditText) getActivity().findViewById(R.id.modificationText); 

в

 final EditText editText = (EditText) modifyView.findViewById(R.id.modificationText); 

Ваш EditText живет в modify_dialog.xml поэтому вам нужно использовать переменную, которая была завышена с помощью этого layout (здесь modifyView ), чтобы найти id не layout , getActivty() будет выглядеть в getActivty() .

Ваш раздувание макета, и у вас есть этот builder.setView(modifyView);

Итак, чтобы инициализировать edittext, замените

  final EditText editText = (EditText)getActivity().findViewById(R.id.modificationText); 

от

  final EditText editText = (EditText) modifyViewfindViewById(R.id.modificationText); 

findViewById ищет представление с идентификатором, указанным в текущем раздутом макете. Вам не нужно getActivity вместо использования объекта inflated view для инициализации вашего EditText.

 public final Activity getActivity () Added in API level 11 Return the Activity this fragment is currently associated with. 

Это потому, что вы просматриваете представление из задачи, используя changeView.findView …