How to make a DatePicker within a Dialog?

1

I would like someone to help me with this I am new I have just started and I have tried to make a date selector inside my code, but it does not work for me, this is my code. This generates me a window with a form where I have 2 EditText that must take the value of a date when I click on an ImageButton with the help of the DatePicker, what I did does not give me an error but it does not work for me, I hope you can help me Thanks in advance

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {


    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View dialogView = inflater.inflate(R.layout.activity_adicionar_plan, null);
    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Adicionar " + getResources().getString(R.string.nav_plan));
    //builder.setIcon(R.drawable.ic_action_add);
    builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            //no hacer nada

            BDPlan db = new BDPlan(getContext());
            ContentValues contentValues = new ContentValues();
            EditText editNombreCategoria = (EditText) dialogView.findViewById(R.id.PeditNombreCategoria);
            contentValues.put(db.CN_DENOMINACION, editNombreCategoria.getText().toString());
            CheckBox checkIndividual = (CheckBox) dialogView.findViewById(R.id.PcheckIndividual);
            if(checkIndividual.isChecked() == true){
                contentValues.put(db.CN_INDIVIDUAL, "1");
            }else {
                contentValues.put(db.CN_INDIVIDUAL, "0");
            }
            CheckBox checkMensual = (CheckBox) dialogView.findViewById(R.id.PcheckMensual);
            if(checkMensual.isChecked() == true){
                contentValues.put(db.CN_MENSUAL, "1");
            }else {
                contentValues.put(db.CN_MENSUAL, "0");
            }
            CheckBox checkAnual = (CheckBox) dialogView.findViewById(R.id.PcheckAnual);
            if(checkAnual.isChecked() == true){
                contentValues.put(db.CN_ANUAL, "1");
            }else {
                contentValues.put(db.CN_ANUAL, "0");
            }
            EditText editFechaInicio = (EditText) dialogView.findViewById(R.id.PeditFechaInicio);
            contentValues.put(db.CN_FECHAINICIO, editFechaInicio.getText().toString());
            EditText editFechaFin = (EditText) dialogView.findViewById(R.id.PeditFechaFin);
            contentValues.put(db.CN_FECHAFIN, editFechaFin.getText().toString());
            EditText editDescripcion = (EditText) dialogView.findViewById(R.id.PeditDescripcion);
            contentValues.put(db.CN_DESCRIPCION, editDescripcion.getText().toString());
            db.InsertaP(contentValues);
            //db.ModificarCA(contentValues,String.valueOf(i+1));

            FragmentTransaction transaction;
            transaction = getActivity().getSupportFragmentManager().beginTransaction();
            PlanFragment fragment = new PlanFragment();
            transaction.replace(R.id.ContenedorInicio, fragment).commit();


        }
    })
            .setNegativeButton(R.string.aplicar, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    //no hacer nada
                    BDPlan db = new BDPlan(getContext());
                    ContentValues contentValues = new ContentValues();
                    EditText editNombreCategoria = (EditText) dialogView.findViewById(R.id.PeditNombreCategoria);
                    contentValues.put(db.CN_DENOMINACION, editNombreCategoria.getText().toString());
                    CheckBox checkIndividual = (CheckBox) dialogView.findViewById(R.id.PcheckIndividual);
                    if(checkIndividual.isChecked() == true){
                        contentValues.put(db.CN_INDIVIDUAL, "1");
                    }else {
                        contentValues.put(db.CN_INDIVIDUAL, "0");
                    }
                    CheckBox checkMensual = (CheckBox) dialogView.findViewById(R.id.PcheckMensual);
                    if(checkMensual.isChecked() == true){
                        contentValues.put(db.CN_MENSUAL, "1");
                    }else {
                        contentValues.put(db.CN_MENSUAL, "0");
                    }
                    CheckBox checkAnual = (CheckBox) dialogView.findViewById(R.id.PcheckAnual);
                    if(checkAnual.isChecked() == true){
                        contentValues.put(db.CN_ANUAL, "1");
                    }else {
                        contentValues.put(db.CN_ANUAL, "0");
                    }
                    EditText editFechaInicio = (EditText) dialogView.findViewById(R.id.PeditFechaInicio);
                    contentValues.put(db.CN_FECHAINICIO, editFechaInicio.getText().toString());
                    EditText editFechaFin = (EditText) dialogView.findViewById(R.id.PeditFechaFin);
                    contentValues.put(db.CN_FECHAFIN, editFechaFin.getText().toString());
                    EditText editDescripcion = (EditText) dialogView.findViewById(R.id.PeditDescripcion);
                    contentValues.put(db.CN_DESCRIPCION, editDescripcion.getText().toString());
                    db.InsertaP(contentValues);
                    //buscar como no cerrar el dialog
                }
            })
            .setNeutralButton(android.R.string.no, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });

ImageButton bHome = (ImageButton) dialogView.findViewById (R.id.PbHome);

    bInicio.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onClick(View view) {
            final DatePickerDialog datePickerDialog = new DatePickerDialog(getContext());

            datePickerDialog.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int year, int month, int day ) {

                    year = cldr.get(Calendar.YEAR);
                    month = cldr.get(Calendar.MONTH);
                    day = cldr.get(Calendar.DAY_OF_MONTH);

                    String date = String.valueOf(day) + "-" + String.valueOf(month) + "-" + String.valueOf(year);
                    EditText editFechaInicio = (EditText) dialogView.findViewById(R.id.PeditFechaInicio);
                    editFechaInicio.setText(date);
                    datePickerDialog.show();


                }
            });

        }
    });




    builder.setView(dialogView);
    return builder.create();
}
@Override
public void show(android.support.v4.app.FragmentManager manager, String tag) {
    super.show(manager, tag);
}

}

    
asked by Adrian Pang 08.05.2018 в 21:17
source

2 answers

0

Take guiate because this is a simple one

This is in the main class

//instancias el date picker que hayas declarado
datePicker = (DatePicker) findViewById(R.id.datePicker);
Calendar calendar = Calendar.getInstance();
datePicker.init(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.onDateChangedListener()
{
    @Override
    public void onDateChanged(DatePicker datePicker, int i, int i1, int i2)
    {
        Toast.makeText(getApplicationContext(), datePicker.getDayOfMonth + datePicker.getMonth + datePicker.getYear, Toast.LENGHT_SHORT).show();
    }
 });

I hope this will guide you

    
answered by 08.05.2018 / 21:28
source
0

This was my solution:

    bInicio.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int anno = calendario.get(Calendar.YEAR);
            int mes = calendario.get(Calendar.MONTH);
            int dia = calendario.get(Calendar.DAY_OF_MONTH);

            final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
                    calendario.set(Calendar.YEAR, year);
                    calendario.set(Calendar.MONTH, monthOfYear);
                    calendario.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                    String fechaInicio = String.valueOf(dayOfMonth) + "-" + String.valueOf(monthOfYear) + "-" + String.valueOf(year);
                    editText.setText(fechaInicio);
                }
            };
            new DatePickerDialog(getContext(), date, anno,mes,dia).show();
        }
    });
    
answered by 09.05.2018 в 17:11