How to generate a datepicker from a fragment?

0

I need to create a date picker from a fragment, the problem is that the datepicker that I have seen (examples) are generated from an Activity, and it turns out that for the fragment is not iggual, I need to store a period of time and in the fragment I have 2 button and 2 textview a button and% textview for the beginning of the date and the rest for the completion of it these text view will then be stored in the database in a way integer ... but that's another thing ...

My goal is:

generate the data picker in the fragment

get a start date and a closing date (ie a period of time) (in each button there is a TextView that will load those dates)

ConfigurationPeriodoF.java (this is the fragment)

package company.viral.organizadorjec.FracmentPopUp;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.icu.util.Calendar;
import android.icu.util.TimeZone;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

import company.viral.organizadorjec.R;

import static android.content.Context.LAYOUT_INFLATER_SERVICE;


public class ConfiguracionPeriodoF extends Fragment {



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // mandamos a cargar la imagen del fragment
        View view = inflater.inflate(R.layout.fragment_configuracion_periodo, container, false);

        //creamos las variables que van a interactuar con el layout
        //TextView
        TextView inifecha = (TextView)view.findViewById(R.id.fechaini);
        TextView finalfecha = (TextView)view.findViewById(R.id.fechafinal);
        //botones
        Button btnini = (Button)view.findViewById(R.id.btnfragfecha);
        Button btnfinal = (Button)view.findViewById(R.id.btnfragfinal);


        return view;
    }
}

fragment_configuracion_periodo.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="company.viral.organizadorjec.FracmentPopUp.ConfiguracionPeriodoF">


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:text="Inserte periodo de trabajo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            android:gravity="center"
            android:textSize="24sp"
            tools:textColor="@android:color/holo_blue_dark" />

        <Space
            android:layout_width="match_parent"
            android:layout_height="36dp" />

        <EditText
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/etnombreperiodo"
            android:hint="Nombre del periodo a insertar"
            android:gravity="center"
            android:layout_width="match_parent" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:text="Inicio"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/btnfragfecha"
                android:layout_weight="1"
                style="@android:style/Widget.Button" />

            <TextView

                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/fechaini"
                android:gravity="center"
                android:textSize="24sp"
                android:layout_weight="1"
                tools:textColor="@android:color/holo_blue_dark" />


        </LinearLayout>

        <Space
            android:layout_width="match_parent"
            android:layout_height="36dp" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:text="Final"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/btnfragfinal"
                android:layout_weight="1"
                style="@android:style/Widget.Button" />

            <TextView

                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/fechafinal"
                android:gravity="center"
                android:textSize="24sp"
                android:layout_weight="1"
                tools:textColor="@android:color/holo_blue_dark" />


        </LinearLayout>

        <Space
            android:layout_width="match_parent"
            android:layout_height="36dp" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <Button
                android:text="Agregar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/agregarperiodo"
                android:layout_weight="1"
                style="@android:style/Widget.Button"/>
            <Button
                android:text="Editar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/editarperiodo"
                android:layout_weight="1"
                style="@android:style/Widget.Button"/>
        </LinearLayout>

    </LinearLayout>



</FrameLayout>
    
asked by ERny JOsé HIdalgo COrrea 21.01.2017 в 19:11
source

2 answers

1

Easy ... you must implement this in your onclick of the fragment corresponding to the date you want to capture (that is, one for each button only modifies the corresponding variables for the second button ...

final Calendar calendario = Calendar.getInstance();
int yy = calendario.get(Calendar.YEAR);
int mm = calendario.get(Calendar.MONTH);
int dd = calendario.get(Calendar.DAY_OF_MONTH);


DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

     String fecha = String.valueOf(year) +"-"+String.valueOf(monthOfYear)
                            +"-"+String.valueOf(dayOfMonth);
     inifecha.setText(fecha);

    }
}, yy, mm, dd);

datePicker.show();
    
answered by 21.01.2017 / 19:57
source
0

Make some changes.

public class ConfiguracionPeriodoF extends Fragment implements View.OnClickListener{

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // mandamos a cargar la imagen del fragment
        View view = inflater.inflate(R.layout.fragment_configuracion_periodo, container, false);

        //creamos las variables que van a interactuar con el layout
        //TextView
        TextView inifecha = (TextView)view.findViewById(R.id.fechaini);
        TextView finalfecha = (TextView)view.findViewById(R.id.fechafinal);
        //botones
        Button btnini = (Button)view.findViewById(R.id.btnfragfecha);
        Button btnfinal = (Button)view.findViewById(R.id.btnfragfinal);


        return view;
    }


@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnfragfecha:
                obtenerFecha();
                break;
        }
    }

}

Call this function in your event, click the btnini button, for example.

public void obtenerFecha(){

        final int mes = c.get(Calendar.MONTH);
        final int dia = c.get(Calendar.DAY_OF_MONTH);
        final int anio = c.get(Calendar.YEAR);

        DatePickerDialog recogerFecha = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

                int mesActual = month + 1;
                String diaFormateado = (dayOfMonth < 10)? "0" + String.valueOf(dayOfMonth):String.valueOf(dayOfMonth);
                String mesFormateado = (mesActual < 10)? "0" + String.valueOf(mesActual):String.valueOf(mesActual);

                inifecha.setText(diaFormateado + "/" + mesFormateado +"/"+ year);

            }
        },anio, mes, dia);

        recogerFecha.show();

    }

Ready so you will get the current date, I hope it works for you.

    
answered by 22.08.2017 в 16:41