Search code examples
androidandroid-datepickerandroid-timepicker

How can I pass or get the result to my MainActivity?


I want to create date and timepicker in my current android project. I have other code in my MainActivity. This is a new class "Changedatetime" I added that contains my time and datepicker code. Now how can I pass or get the result of the pickers to my MainActivity?

Changedatetime:

package com.app.annoy;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

public class Changetimedate extends Activity {

    static final int DATE_DIALOG_ID = 1;
    static final int TIME_DIALOG_ID = 2;

    private Button pickDate;
    private int year, month, day;

    private Button pickTime;
    private int hours, min;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_layout);


        pickDate = (Button)findViewById(R.id.date_button);

        pickDate.setOnClickListener( new OnClickListener() {

            @Override
            public void onClick(View v) {
                showDialog(DATE_DIALOG_ID);
            }

        });

        final Calendar cal = Calendar.getInstance();
        year = cal.get(Calendar.YEAR);
        month = cal.get(Calendar.MONTH);
        day = cal.get(Calendar.DAY_OF_MONTH);

        updateDate();


        pickTime = (Button)findViewById(R.id.time_button);

        pickTime.setOnClickListener( new OnClickListener () {

            @Override
            public void onClick(View v) {
                showDialog(TIME_DIALOG_ID);

            }

        });

        hours = cal.get(Calendar.HOUR);
        min = cal.get(Calendar.MINUTE);

        updateTime();
    }

    private void updateTime() {
        pickTime.setText(new StringBuilder().append(hours).append(':')
                .append(min));

    }

    private void updateDate() {
        pickDate.setText(new StringBuilder().append(day).append('-')
                .append(month + 1).append('-').append(year));

    }

    private DatePickerDialog.OnDateSetListener dateListener = 
        new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int yr, int monthOfYear,
                    int dayOfMonth) {
                year = yr;
                month = monthOfYear;
                day = dayOfMonth;
                updateDate();
            }
    };

    private TimePickerDialog.OnTimeSetListener timeListener = 
        new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                hours = hourOfDay;
                min = minute;
                updateTime();
            }

    };
    protected Dialog onCreateDialog(int id){
        switch(id) {
        case DATE_DIALOG_ID:
            return new DatePickerDialog(this, dateListener, year, month, day);
        case TIME_DIALOG_ID:
            return new TimePickerDialog(this, timeListener, hours, min, false);
        }
        return null;

    }
}

Solution

  • I don´t know if this is causing Your problem, but You have some wron declarations in xml layout. In Your first Button, You wrote layout_toLeftOf="@+id....", delete "+". In the Second Button, You have defined the id as "@id/...", please add here the "+". The layout has to look like this:

        <Button
            android:id="@+id/date_button"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/edit_venue"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@id/time_button"  <-----this was wrong
            android:text="@string/date_label"
             />
    
    
        <Button
            android:id="@+id/time_button"  <---this was wrong
            android:layout_width="160dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/edit_venue"
            android:layout_alignParentRight="true"
            android:text="@string/time_label"
            />