Как получить доступ к данным EditText в DialogFragment - PullRequest
0 голосов
/ 25 августа 2018

Мой вопрос заключается в том, как получить данные, которые пользователи вводят в мой EditText, а затем показать данные с помощью метода Toast.makeTest.

Я не знаю, как получить доступ к EditText в моемфрагмент и эта ссылка не работали для меня: getText из EditText в DialogFragment

Это мой код:

public class FragmentDialog extends DialogFragment {
EditText entry;
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)

 {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(R.layout.alert_dialog).setTitle("Add your text").setMessage("HElllloooooooo").setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Toast.makeText(getActivity(), entry.getText().toString(), Toast.LENGTH_SHORT).show();
        }
    }).setPositiveButton("ADD", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Toast.makeText(getActivity(),  entry.getText().toString(), Toast.LENGTH_SHORT).show();
        }
    });
    return builder.create();
}
}

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Как работает редактирование текста:

Сначала вы должны связать это:

entry =  view.findViewById(R.id.MyEdtText);

Секунда Чтобы получить доступ к записанным данным (тексту) в редактировании, вы должны позвонить:

entry.getText().toString()

Чтобы показать письменный текст в тосте, вы должны:

if(TextUtils.isEmpty(entry.getText().toString()){
     Toast.makeText(getActivity(), "No Text Entered", Toast.LENGTH_SHORT).show();
}
else{
    Toast.makeText(getActivity(), "The Text Entered Is"+  entry.getText().toString(), Toast.LENGTH_SHORT).show();
}

Конкретное решение для вашего дела:

    public class FragmentDialog extends DialogFragment {
   private EditText entry;



    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)

    {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        LayoutInflater inflater = getActivity().getLayoutInflater();

        View DialogView = inflater.inflate(R.layout.alert_dialog,null);

        entry = DialogView.findViewById(R.id.entryEditText); // replace it with the correct XML ID

        builder.setView(DialogView).setTitle("Add your text").setMessage("HElllloooooooo").setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(getActivity(), "canceled operation", Toast.LENGTH_SHORT).show();
            }
        }).setPositiveButton("ADD", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(getActivity(), "the edit text value: "+entry.getText().toString(), Toast.LENGTH_SHORT).show();
            }
        });
        return builder.create();
    }
}

А чтобы показать диалог, наберите в своей активности следующий код:

FragmentDialog dialog = new FragmentDialog();
dialog.show(getSupportFragmentManager(), "YourDialog");

Подтверждение концепции (посмотрите, как это работает):

blob:https://imgur.com/1c2f5429-d11f-4f5e-b276-7b7fb84abaf8

0 голосов
/ 25 августа 2018

Вы должны найти ViewbyId в onCreateView, как показано ниже

  public class FragmentDialog extends DialogFragment {
    EditText entry;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.fragment_username, container);
          entry = (EditText) view.findViewById(R.id.username);
          mEditText.requestFocus();

          return view;
        }}
...