Android: How to get values from date and time picker
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);
Admin
Updated on May 03, 2020Comments
-
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
andtimePicker
and abutton set
. So when he click onset button
adialog 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 thexml file
relating to display the data because when i comment java lines of fetching the values fromdatePicker
andtimePicker
, 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 about 12 yearssorry 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 about 12 yearshey please try to help man i'll surly accpet and upvote your answer.
-
Admin about 12 yearsok 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 about 12 yearscreate a seprate xml file of scrollview and inflate it via inflater and then set it to alert dialog
-
Admin about 12 yearsthat 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 about 12 yearsThanks 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 almost 6 yearsGetCurrentHour was deprecated. Use getHour() now for 6.0+.