使用TimePickerDialog设置的时间设置edittext框

时间:2014-02-21 09:18:47

标签: java android

如何让这个时间选择器设置edittext框与TimePickerDialog设置的时间?

package com.example.d;

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {

     /** Called when the activity is first created. */
        int hour,min;
        //static final int TIME_DIALOG_ID=0;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);





        EditText etOne = (EditText) findViewById(R.id.editText1);
        etOne.setOnClickListener(new EditText.OnClickListener() {
            public void onClick(View v) {
                    //Do stuff here

                Calendar c=Calendar.getInstance();
                int hour=c.get(Calendar.HOUR);
                int min=c.get(Calendar.MINUTE);



                showTimeDialog(v, hour, min);
            }
        });

        }
        OnTimeSetListener timeSetListener;
        public void showTimeDialog(View v, int hour, int min)
        {

            (new TimePickerDialog(this, timeSetListener, hour, min, true)).show();

            //how do I make this time picker set the edittext box with the time that the TimePickerDialog set
        }


    }

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" 
        android:width="320px">

        <requestFocus />
    </EditText>





</RelativeLayout>

3 个答案:

答案 0 :(得分:4)

   public class MainActivity extends Activity {


     int hour = -1, min = -1;
     static final int TIME_DIALOG_ID = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       EditText etOne = (EditText) findViewById(R.id.editText1);
        etOne.setOnClickListener(new EditText.OnClickListener() {
          public void onClick(View v) {
               // Do stuff here
              if (hour == -1 || min == -1) {
                  Calendar c = Calendar.getInstance();
                  hour = c.get(Calendar.HOUR);
                  min = c.get(Calendar.MINUTE);
             }

            showTimeDialog(v, hour, min);
        }
    });

}

public void showTimeDialog(View v, int hour, int min) {
    (new TimePickerDialog(MainActivity.this, timeSetListener, hour, min,
            true)).show();
}

public TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

        hour = hourOfDay;
        min = minute;
        EditText et = (EditText) findViewById(R.id.editText1);
        et.setText(hour + " : " + min);

    }
  };
  }

答案 1 :(得分:2)

你可以在onTimeSetListener这样做

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

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute)
    {
        setTimeEditText.setText(hour + ":" + minute);
    }
};

答案 2 :(得分:0)

你必须创建OnTimeSetListener的实例,并且在它的onTimeSet方法中你有选定的小时和分钟。