2012-09-16 5 views
5

Desidero incorporare un DatePickerDialog all'interno di un'attività Android. Non voglio che lo DatePicker venga visualizzato quando si fa clic su un pulsante come finestra di dialogo, ma lo si incorpora all'interno della mia attività stessa. Ho provato a utilizzare la vista DatePicker all'interno del mio layout, ma questo sembra essere diverso da DatePickerDialog.Incorpora datepicker all'interno di un'attività

Sto usando DialogFragment per la creazione del DatePickerDialog e utilizzando il seguente codice nel onCreate di MainAcitivity.java

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    DatePickerDialogFragment datePickerDialogFragment = DatePickerDialogFragment.newInstance(); 

    ft.add(R.id.main_screen_layout, datePickerDialogFragment); // main_screen_layout is given as the id for the layout related to MainActivity 
    ft.commit(); 

// DatePickerDialogFragment.java

public class DatePickerDialogFragment extends DialogFragment

implements DatePickerDialog.OnDateSetListener { 

public static DatePickerDialogFragment newInstance() { 
    return new DatePickerDialogFragment(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.dialog_datepicker, container, false); 
    View tv = v.findViewById(R.id.tv); 

    ((TextView)tv).setText("This is a new instance"); 

    return v; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Calendar c = Calendar.getInstance(); 
    return new DatePickerDialog(getActivity(), this, 
      c.get(Calendar.YEAR), 
      c.get(Calendar.MONTH), 
      c.get(Calendar.DAY_OF_MONTH)); 
} 

public void onDateSet(DatePicker view, int year, int monthOfYear, 
     int dayOfMonth) { 
    // TODO Auto-generated method stub 

} 

}

Come fare per questo?

+0

Ci sono molte componenti di data raccoglitori dell'interfaccia utente. Perché non usi uno di questi? –

risposta

1

I DatePicker e DateTime all'interno del layout dell'attività. L'idea è di consentire l'edizione di entrambi, comporre un valore di data e restituirlo una volta che l'utente fa clic su un pulsante done/set. Qui di seguito, è possibile trovare un po 'di codice che mostra come il DatePicker è incorporato nel layout e il codice di attività:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:orientation="vertical"> 

    <DatePicker 
     android:id="@+id/date_value" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:calendarViewShown="false" /> 
</LinearLayout> 


public class DateSelectionActivity extends Activity { 

    private DatePicker datePicker; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // ... 

     this.datePicker = (DatePicker) this.findViewById(R.id.date_value); 
     this.datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), null); 

     // ... 
    } 

    private OnClickListener confirmButtonClickListener = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       // Get user selection 
       // DateSelectionActivity.this.datePicker.getYear()); 
       // DateSelectionActivity.this.datePicker.getMonth()); 
       // DateSelectionActivity.this.datePicker.getDayOfMonth()); 
      } 
    } 
}