2015-07-22 1 views
-1

Je souhaite créer un sélecteur de boîte de dialogue Date pour remplir automatiquement mon EditText. il y a 2 EditText et je ne sais pas comment modifier editextext lanch dialod dans mon auditeur.Boîte de dialogue Sélecteur de date dans le fragment

public class DatePickerFragment extends DialogFragment{ 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    super.onCreateDialog(savedInstanceState); 
    Calendar c = Calendar.getInstance(); 
    int year= c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day_of_month = c.get(Calendar.DAY_OF_MONTH); 
    Log.i(Acceuil.APP_TAG, "DialogFrag method Id: " +this.getId()); 

    DatePickerDialog datePicker = new DatePickerDialog(getActivity(), STYLE_NORMAL, (OnDateSetListener)getActivity(), year,month,day_of_month); 

    return datePicker; 
} 

Et dans mon activité:

public class AddCar extends FragmentActivity implements OnItemSelectedListener,OnDateSetListener{ 
    EditText registration_ET=null; 
    EditText control_ET=null; 
    DialogFragment newFrag= null; 
    DialogFragment newFrag2= null; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.addcar_layout); 
     registration_ET = (EditText) this.findViewById(R.id.firstRegistration_editText); 
     registration_ET.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Log.i(Acceuil.APP_TAG,"Registration ET clicked!"); 
       newFrag = new DatePickerFragment(); 
       newFrag.show(getSupportFragmentManager(), "DateRegisterId"); 
      } 
     }); 
     control_ET = (EditText) this.findViewById(R.id.control_editText); 
     control_ET.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Log.i(Acceuil.APP_TAG,"Registration ET clicked!"); 
       newFrag2 = new DatePickerFragment(); 
       newFrag2.show(getSupportFragmentManager(), "controlId"); 
      } 
     }); 
    } 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { 
     Log.i(Acceuil.APP_TAG, "onDateSet AddCar method"); 
     //switch (view.getId()) 
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
     Calendar c = Calendar.getInstance(); 
     c.set(year, monthOfYear, dayOfMonth); 
     String date = sdf.format(c.getTime()); 

     } 

Ce que je veux est mise à jour le editText correct registration_ET ou control_ET dépent whitch fragment fixé la date. merci.

Répondre

0

Modifiez simplement votre DatePickerFragment comme suit.

public class DatePickerFragment extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     super.onCreateDialog(savedInstanceState); 
     Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day_of_month = c.get(Calendar.DAY_OF_MONTH); 
     DatePickerDialog dialog = new DatePickerDialog(getActivity(), STYLE_NORMAL, (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day_of_month); 
     dialog.getDatePicker().setTag(getTag()); 
     return dialog; 
    } 
} 

Note:

J'ai ajouté deux lignes suivantes à votre code.

DatePickerDialog dialog = new DatePickerDialog(getActivity(), STYLE_NORMAL, (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day_of_month); 
dialog.getDatePicker().setTag(getTag()); 

Maintenant vous pouvez obtenir votre balise de onDateSet méthode comme suit.

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    if (view.getTag().equals("DateRegisterId")) { 
     registration_ET.setText(monthOfYear + "/" + dayOfMonth + "/" + year); 
    } else if (view.getTag().equals("controlId")) { 
     control_ET.setText(monthOfYear + "/" + dayOfMonth + "/" + year); 
    } 
} 

Mise à jour

1. DatePickerFragment.java

package com.example.androidtester; 

import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 

import java.util.Calendar; 

public class DatePickerFragment extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     super.onCreateDialog(savedInstanceState); 
     Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day_of_month = c.get(Calendar.DAY_OF_MONTH); 
     DatePickerDialog dialog = new DatePickerDialog(getActivity(), STYLE_NORMAL, (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day_of_month); 
     dialog.getDatePicker().setTag(getTag()); 
     return dialog; 
    } 
} 

2. MainActivity.java

package brightspot.com.androidtester; 

import android.app.DatePickerDialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.DatePicker; 
import android.widget.EditText; 


public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener { 

    private EditText editText; 
    private EditText editText2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editText = (EditText) findViewById(R.id.editText); 
     editText2 = (EditText) findViewById(R.id.editText2); 
     final DatePickerFragment newFrag = new DatePickerFragment(); 
     editText.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       newFrag.show(getSupportFragmentManager(), "editText"); 
      } 
     }); 

     editText2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       newFrag.show(getSupportFragmentManager(), "editText2"); 
      } 
     }); 
    } 

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     if (view.getTag().equals("editText")) { 
      editText.setText(monthOfYear + "/" + dayOfMonth + "/" + year); 
     } else if (view.getTag().equals("editText2")) { 
      editText2.setText(monthOfYear + "/" + dayOfMonth + "/" + year); 
     } 
    } 
} 

I J'espère que ceci vous aidera.

+0

Il n'y a pas de méthode setTag dans DatePickerDialog .. – dav

+0

setTag n'est pas dans DatePickerDialog, qui est disponible dans [DatePicker] (http://developer.android.com/reference/android/widget/DatePicker.html), c'est pourquoi je ajouté 'dialog.getDatePicker(). setTag (getTag());'. – Gunaseelan

+0

Je ne l'ai pas vu. Merci pour votre aide je suis dessus depuis 2 jours! – dav