0

我想在我当前的 android 项目中创建日期和时间选择器。我的 MainActivity 中有其他代码。这是我添加的一个新类“Changedatetime”,其中包含我的时间和日期选择器代码。现在如何将选择器的结果传递或获取到我的 MainActivity?

更改日期时间:

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;

    }
}
4

1 回答 1

0

我不知道这是否会导致您的问题,但是您在 xml 布局中有一些错误的声明。在你的第一个按钮中,你写了 layout_toLeftOf="@+id....",删除了 "+"。在第二个按钮中,您已将 id 定义为“@id/...”,请在此处添加“+”。布局必须如下所示:

    <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"
        />
于 2013-07-01T11:37:06.123 回答