Android: How to get values from date and time picker

22,608

Solution 1

Don't do anything extra, Your code is just prefect. Just remove the code of ScrollLayout or its attribute wherever you are using that. Lemme write the updated code for you from ScrollLayout

 final   DatePicker dp = (DatePicker) findViewById(R.id.datePicker);
        final   TimePicker tp = (TimePicker) findViewById(R.id.timePicker);
        btnSet.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String strDateTime = dp.getYear() + "-" + (dp.getMonth() + 1) + "-" + dp.getDayOfMonth() + " "+ tp.getCurrentHour() + ":" + tp.getCurrentMinute();

                Toast.makeText(TimeDate.this, "User selected " + strDateTime + "Time", Toast.LENGTH_LONG).show(); //Generate a toast only if you want 
                finish();   // If you want to continue on that TimeDateActivity
                 // If you want to go to new activity that code you can also write here
            }});

Solution 2

ScrollView DTPicker = (ScrollView) View.inflate(TimeDate.this,R.layout.time_date, null);
Button  btnSet = (Button) DTPicker.findViewById(R.id.btnSetDateTime);
final   DatePicker dp = (DatePicker) DTPicker.findViewById(R.id.datePicker);
final   TimePicker tp = (TimePicker) DTPicker.findViewById(R.id.timePicker);

replace the above line with below

ScrollView DTPicker = (ScrollView)findViewById(R.id.scrollView1);
Button  btnSet = (Button)findViewById(R.id.btnSetDateTime);
final   DatePicker dp = (DatePicker)findViewById(R.id.datePicker);
final   TimePicker tp = (TimePicker)findViewById(R.id.timePicker);
Share:
22,608
Admin
Author by

Admin

Updated on May 03, 2020

Comments

  • Admin
    Admin about 4 years

    I am building a app in which i am trying to ask user to select the time, so i used datePicker and timePicker and a button set. So when he click on set button a dialog box comes and say like you have selected x date and x time or in any way a message should appear on screen like user have selected this time. So i built the code but as my app comes to that activity it always got forcefully stopped.There is no problem with the xml file relating to display the data because when i comment java lines of fetching the values from datePicker and timePicker, app works absolutely fine. Still i am posting both files code for easy to understanding. also posting the log cat exception. I have removed all unnecessary code like import and packages and extra button etc To make it quick readable.

    This is the code of .xml file

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:weightSum="10"
    android:id="@+id/commonlayout" android:background="#FFFFFF">
    
    <LinearLayout android:id="@+id/llheader"
        android:layout_width="fill_parent" android:layout_height="20dp"
         android:layout_weight="1"
         android:background="@drawable/bg">
    
        <RelativeLayout android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:layout_gravity="center"> <!--header-->
            <TextView
                android:id="@+id/txt_header"
                android:layout_width="wrap_content"          
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"/>            
            </RelativeLayout>           
    </LinearLayout>
     <ScrollView 
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:layout_width="wrap_content"
        android:id="@+id/linearLayout1" android:orientation="vertical"
        android:layout_height="wrap_content" 
    <DatePicker android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
      android:id="@+id/datePicker"></DatePicker>
    <TimePicker android:id="@+id/timePicker"
        android:layout_width="wrap_content"   
      android:layout_height="wrap_content</TimePicker>
    <TableRow android:id="@+id/tableRow1" android:layout_height="wrap_content"
        android:layout_width="match_parent" android:gravity="center">
    
        <Button android:id="@+id/btnSetDateTime"
            android:layout_height="wrap_content" android:text="Set"
            android:layout_width="wrap_content"/>
         <Button 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="Next"                       
            android:id="@+id/btnNext1" />   
      </TableRow>
     </LinearLayout>
     </ScrollView>    
    <LinearLayout android:id="@+id/lldata"
        android:layout_weight="8" android:layout_width="fill_parent"
        android:layout_height="0dp" android:background="#FFFFFF">           
    </LinearLayout>
    
    <LinearLayout android:id="@+id/llfooter"
        android:layout_width="fill_parent"
        android:orientation="horizontal" android:layout_height="20dp"
        android:visibility="visible" 
        android:layout_margin="0dp">     
    </LinearLayout>
    

    This is the code of TimeDate.java:

    public class TimeDate extends Activity
    {
    
    
    Button  btnNext;
    private TextView dateText;
     public void onCreate(Bundle savedInstanceState)
     {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.time_date);
            btnNext=(Button)this.findViewById(R.id.btnNext1);           
            btnNext.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) 
                {
    
                        Intent myintent = new  Intent(TimeDate.this, Next.class);
                        startActivity(myintent);
                        finish();
                        }
            });
            ScrollView DTPicker = (ScrollView) View.inflate(TimeDate.this,R.layout.time_date, null);
    
            Button  btnSet = (Button) DTPicker.findViewById(R.id.btnSetDateTime);
            final   DatePicker dp = (DatePicker) DTPicker.findViewById(R.id.datePicker);
            final   TimePicker tp = (TimePicker) DTPicker.findViewById(R.id.timePicker);
    
            btnSet.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    String strDateTime = dp.getYear() + "-" + (dp.getMonth() + 1) + "-" + dp.getDayOfMonth() + " "+ tp.getCurrentHour() + ":" + tp.getCurrentMinute();}});
    
           AlertDialog alert = new AlertDialog.Builder(TimeDate.this).create();
            alert.setTitle("Reminder");
            alert.setView(DTPicker);
            alert.show();
    
     }       
    }
    

    This is the logcat exception:

    04-27 11:48:24.830: D/AndroidRuntime(812): Shutting down VM
    04-27 11:48:24.830: W/dalvikvm(812): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    04-27 11:48:24.851: E/AndroidRuntime(812): FATAL EXCEPTION: main
    04-27 11:48:24.851: E/AndroidRuntime(812): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ogtpl.android/com.ogtpl.android.TimeDate}: java.lang.ClassCastException: android.widget.LinearLayout
    
  • Admin
    Admin about 12 years
    sorry mate but still not working. this is the log cat exception W/dalvikvm(1007): threadid=1: thread exiting with uncaught exception (group=0x4001d800) E/AndroidRuntime(1007): FATAL EXCEPTION: main E/AndroidRuntime(1007): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ogtpl.android/com.ogtpl.android.TimeDate}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
  • Admin
    Admin about 12 years
    hey please try to help man i'll surly accpet and upvote your answer.
  • Admin
    Admin about 12 years
    ok my mistake i am sorry but i have met few nerds before who are here only for reputation. SO sorry man but really i'll be thankful to you if you can sort out this problem
  • Shankar Agarwal
    Shankar Agarwal about 12 years
    create a seprate xml file of scrollview and inflate it via inflater and then set it to alert dialog
  • Admin
    Admin about 12 years
    that will surly work, i know because i have done that but i want to do this in one xml screen so is there any way to do it in one screen
  • Admin
    Admin about 12 years
    Thanks man for help, but it is working like in a pop up. i want that this should be like the main screen. If you want i can give u a screenshot what i want
  • jcaruso
    jcaruso almost 6 years
    GetCurrentHour was deprecated. Use getHour() now for 6.0+.