Android – невозможно получить значение из EditText внутри пользовательского диалога

Мне не удалось получить вход с моего объекта EditText внутри моего настраиваемого диалога.

public class SetCityDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater factory = LayoutInflater.from(MainActivity.this); final View view = factory.inflate(R.layout.city_dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // Get the layout inflater LayoutInflater inflater = getActivity().getLayoutInflater(); builder.setView(inflater.inflate(R.layout.city_dialog, null)) // Add action buttons .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { //This is the input I can't get text from EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text); //query is of the String type query = inputTemp.getText().toString(); newQuery(); getJSON newData = new getJSON(); newData.execute("Test"); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { SetCityDialog.this.getDialog().cancel(); } }); return builder.create(); } } 

Я не получаю никаких исключений, но переменному запросу присваивается пустая строка. Любая помощь будет фантастической.

Solutions Collecting From Web of "Android – невозможно получить значение из EditText внутри пользовательского диалога"

Я пытался сделать то же самое, и я получаю ту же ошибку. Я не знаю почему. Я уже использовал AlertDialog.Builder в прошлом и не испытываю никаких проблем. Но в вашем случае измените этот код:

 public void onClick(DialogInterface dialog, int id) { //This is the input I can't get text from EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text); //query is of the String type query = inputTemp.getText().toString(); newQuery(); getJSON newData = new getJSON(); newData.execute("Test"); } 

Под этим:

 public void onClick(DialogInterface dialog, int id) { Dialog f = (Dialog) dialog; //This is the input I can't get text from EditText inputTemp = (EditText) f.findViewById(R.id.search_input_text); query = inputTemp.getText().toString(); ... } 

Это решение работает для меня, и для вас это похоже. Найдено в stackoverflow

Используйте это вместо этого:

 View myLayout = nflater.inflate(R.layout.city_dialog, null); EditText myEditText = (EditText) myLayout.findViewById(R.id.myEditText); String valueOfEditText = myEditText.getText().toString(); 

Не нужно делать так много кодирования. Просто измените

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

в

  builder.setView(view) 

И доступ к тексту EditText, используя ** view.findView …..

  EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text); String xyz = inputTemp.getText().toString(); 
 This is worked for me: // if button is clicked, close the custom dialog dialogButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { Dialog inDialog = (Dialog) dialog; EditText emailAddress = (EditText) inDialog.findViewById(R.id.emailAddress); email = emailAddress.getText().toString(); if(email.length() == 0) { objPublicDelegate.showToast("Please fill Email Address."); }else{ objLoadingDialog.show("Please wait..."); // Call a network thread Async task mNetworkMaster.runForgetAsync(email); } } catch (Exception e) { e.printStackTrace(); } } });