Saturday, 3 October 2015

how to select date time using calendar android

Leave a Comment
This tutorial shows how to set date time in android app when you click on the textbox.

Note : This example using Andorid Studio to create project. Im using Sample Blank Activity with Fragment sample.

Step By Step 

  1. Add One EditText on the fragment
  2. Create DateTimeFragment.java class
  3. Copy Paste DateTimeFragment.java class below.
  4. Override onViewCreated event from fragment
  5. Done.

Full Source Code of MainActivity class + Fragment / placeholder class

  package com.test.selectdatetime;  
 import android.app.Dialog;  
 import android.content.Context;  
 import android.support.annotation.Nullable;  
 import android.support.v4.app.DialogFragment;  
 import android.support.v7.app.ActionBarActivity;  
 import android.support.v4.app.Fragment;  
 import android.os.Bundle;  
 import android.view.LayoutInflater;  
 import android.view.Menu;  
 import android.view.MenuItem;  
 import android.view.View;  
 import android.view.ViewGroup;  
 import android.view.inputmethod.InputMethodManager;  
 import android.widget.EditText;  
 public class MainActivity extends ActionBarActivity {  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     if (savedInstanceState == null) {  
       getSupportFragmentManager().beginTransaction()  
           .add(R.id.container, new PlaceholderFragment())  
           .commit();  
     }  
   }  
   @Override  
   public boolean onCreateOptionsMenu(Menu menu) {  
     // Inflate the menu; this adds items to the action bar if it is present.  
     getMenuInflater().inflate(R.menu.menu_main, menu);  
     return true;  
   }  
   @Override  
   public boolean onOptionsItemSelected(MenuItem item) {  
     // Handle action bar item clicks here. The action bar will  
     // automatically handle clicks on the Home/Up button, so long  
     // as you specify a parent activity in AndroidManifest.xml.  
     int id = item.getItemId();  
     //noinspection SimplifiableIfStatement  
     if (id == R.id.action_settings) {  
       return true;  
     }  
     return super.onOptionsItemSelected(item);  
   }  
   /**  
    * A placeholder fragment containing a simple view.  
    */  
   public static class PlaceholderFragment extends Fragment {  
     private EditText _dateTime;  
     public PlaceholderFragment() {  
     }  
     @Override  
     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {  
       super.onViewCreated(view, savedInstanceState);  
       //set action to textbox  
       _dateTime = (EditText)getActivity().findViewById(R.id.editText);  
       _dateTime.setOnClickListener(new View.OnClickListener() {  
         @Override  
         public void onClick(View v) {  
           InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(  
               Context.INPUT_METHOD_SERVICE);  
           imm.hideSoftInputFromWindow(_dateTime.getWindowToken(), 0);  
           onCreateDialog();  
         }  
       });  
     }  
     @Override  
     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                  Bundle savedInstanceState) {  
       View rootView = inflater.inflate(R.layout.fragment_main, container, false);  
       return rootView;  
     }  
     protected Dialog onCreateDialog() {  
       DialogFragment newFragment = new DateTimeFragment();  
       newFragment.show(this.getFragmentManager(), "datePicker");  
       return null;  
     }  
   }  
 }  


Full Source Code of ActivityMain.xml


  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"  
   android:layout_width="match_parent" android:layout_height="match_parent"  
   tools:context=".MainActivity" tools:ignore="MergeRootFrame" />  


Full Source Code of  FragmentMain.xml

  <RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin"  
   android:paddingRight="@dimen/activity_horizontal_margin"  
   android:paddingTop="@dimen/activity_vertical_margin"  
   android:paddingBottom="@dimen/activity_vertical_margin"  
   tools:context=".MainActivity$PlaceholderFragment">  
   <TextView android:text="@string/hello_world" android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:id="@+id/textView" />  
   <EditText  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:id="@+id/editText"  
     android:layout_below="@+id/textView"  
     android:layout_alignParentLeft="true"  
     android:layout_alignParentStart="true"  
     android:layout_marginTop="44dp"  
     android:layout_alignParentRight="true"  
     android:layout_alignParentEnd="true" />  
 </RelativeLayout>  


DateTimeFragment.java Class

  package com.test.selectdatetime;  
 import android.app.DatePickerDialog;  
 import android.app.Dialog;  
 import android.os.Bundle;  
 import android.support.v4.app.DialogFragment;  
 import android.widget.DatePicker;  
 import android.widget.EditText;  
 import java.util.Calendar;  
 public class DateTimeFragment extends DialogFragment  
     implements DatePickerDialog.OnDateSetListener {  
   private int year;  
   private int month;  
   private int day;  
   private EditText _dateTime;  
   @Override  
   public Dialog onCreateDialog(Bundle savedInstanceState) {  
     // Use the current date as the default date in the picker  
     final Calendar c = Calendar.getInstance();  
     int year = c.get(Calendar.YEAR);  
     int month = c.get(Calendar.MONTH);  
     int day = c.get(Calendar.DAY_OF_MONTH);  
     // Create a new instance of DatePickerDialog and return it  
     return new DatePickerDialog(getActivity(), this, year, month, day);  
   }  
   public void onDateSet(DatePicker view, int _year, int _month, int _day) {  
     // Do something with the date chosen by the user  
     year = _year;  
     month = _month;  
     day = _day;  
     _dateTime = (EditText)getActivity().findViewById(R.id.editText);  
     // set current date into textview  
     _dateTime.setText(new StringBuilder()  
         // Month is 0 based, just add 1  
         .append(day).append("/")  
         .append(month + 1).append("/")  
         .append(year).append(" "));  
   }  
 }  


File Structure


































Example Output 







By
NOTE : – If You have Found this post Helpful, I will appreciate if you can Share it on Facebook, Twitter and Other Social Media Sites. Thanks =)

0 comments:

Post a Comment

Subscribe to our newsletter to get the latest updates to your inbox.

Your email address is safe with us!




Founder of developersnote.com, love programming and help others people. Work as Software Developer. Graduated from UiTM and continue study in Software Engineering at UTMSpace. Follow him on Twitter , or Facebook or .



Powered by Blogger.