Как обратиться к EditText в onCreateView?

445
28 ноября 2016, 18:40

Снова проблемы с EditText. На этот раз связанные с выводом оного из БД в соответствующие поля package com.genius.project.passwordhelper;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;
public class DetailedPassFragment extends DialogFragment implements DialogInterface.OnClickListener {
    EditText siteForm;
    EditText passForm;
    EditText infoForm;
    @Override
    public void onClick(DialogInterface dialogInterface, int buttonId) {
        Dialog editForm = (Dialog) dialogInterface;
        switch (buttonId) {
            case(Dialog.BUTTON_POSITIVE): {
                editForm.dismiss();
                break;
            }
            case(Dialog.BUTTON_NEGATIVE): {
                editForm.dismiss();
                break;
            }
        }
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        View detailedForm = getActivity().getLayoutInflater().inflate(R.layout.passdetail, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
                .setTitle(R.string.editPassLayer)
                .setView(detailedForm)
                .setPositiveButton(R.string.deleteItem, this)
                .setNegativeButton(R.string.enterPass_button, this);
        return builder.create();
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //DialogFragment dialog = (DialogFragment) getActivity().getLayoutInflater().inflate(R.layout.passdetail, false);           //вот тут проблема. Как взять View, чтобы к полям его можно было обращаться и присваивать им значения через setText?
        View detailedForm = getActivity().getLayoutInflater().inflate(R.layout.passdetail, null);
        //Bundle bundle = getArguments();
        Toast.makeText(getActivity().getBaseContext(), getArguments().getString("site"), Toast.LENGTH_SHORT).show();
        siteForm = (EditText) detailedForm.findViewById(R.id.site);
        passForm = (EditText) detailedForm.findViewById(R.id.pass);
        infoForm = (EditText) detailedForm.findViewById(R.id.info);
        siteForm.setText(getArguments().getString("site"));
        passForm.setText(getArguments().getString("pass"));
        infoForm.setText(getArguments().getString("info"));
        return detailedForm;
    }
    @Override
    public void onStop() {                      //обновляет представление mainActivity
        super.onStop();
        MainActivity main = (MainActivity)getActivity();
        main.updateMainList();
    }
    /*@Override
    public void onDestroy() {
        super.onDestroy();
    }*/
}
Answer 1

Мне кажется если onCreateView и вызывается, то создает отдельный вью. Вам нужно в onCreateDialog перенести код для работы с EditText, а onCreateView можно вообще не реализовывать. Это особенности DialogFragment.

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    View detailedForm = getActivity().getLayoutInflater().inflate(R.layout.passdetail, null);
    siteForm = (EditText) detailedForm.findViewById(R.id.site);
    passForm = (EditText) detailedForm.findViewById(R.id.pass);
    infoForm = (EditText) detailedForm.findViewById(R.id.info);
    siteForm.setText(getArguments().getString("site"));
    passForm.setText(getArguments().getString("pass"));
    infoForm.setText(getArguments().getString("info"));
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
            .setTitle(R.string.editPassLayer)
            .setView(detailedForm)
            .setPositiveButton(R.string.deleteItem, this)
            .setNegativeButton(R.string.enterPass_button, this);
    return builder.create();
}
READ ALSO
Проблема кодировки в mysql

Проблема кодировки в mysql

в phpmyadmin у базы данных и у всех таблиц установленно сравнение utf8_unicode_ci, в файле myini раскоментил строчки

495
Как вывести данные из базы Mysql?

Как вывести данные из базы Mysql?

В ячейке xfields написано несколько ссылок таким образомaudio|vip

543
Дубликат primary key почему возникает?

Дубликат primary key почему возникает?

Экспортирую таблицу из БДСоздаю копию её с другим именем но такой же структурой и пустую

394
Объявление переменных в mysql

Объявление переменных в mysql

Как в mysql объявить переменную, присвоить ей какое нибудь значение и использовать ее в запросе? Нужно именно средствами mysql

657