Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从两个计时器获取总小时数_Java_Android_Timepicker - Fatal编程技术网

Java 从两个计时器获取总小时数

Java 从两个计时器获取总小时数,java,android,timepicker,Java,Android,Timepicker,有人能告诉我如何从两个时间选择器中获取总小时数吗?因为两个时间选择器实际上是从同一个函数中获取的,所以可以获取总小时数 WorkDetails.java EditText TimeIn = (EditText) findViewById(R.id.editText6); EditText TimeOut = (EditText) findViewById(R.id.editText7); TimeIn.setOnFocusChangeListene

有人能告诉我如何从两个时间选择器中获取总小时数吗?因为两个时间选择器实际上是从同一个函数中获取的,所以可以获取总小时数

WorkDetails.java

        EditText TimeIn = (EditText) findViewById(R.id.editText6);
        EditText TimeOut = (EditText) findViewById(R.id.editText7);
        TimeIn.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    TimePick time = new TimePick(v);
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    time.show(ft, "TimePicker");
                }
            }
        });


        TimeOut.setOnFocusChangeListener(new View.OnFocusChangeListener(){
            @Override
            public void onFocusChange(View v,boolean hasFocus) {
                if (hasFocus) {
                    TimePick time = new TimePick(v);
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    time.show(ft, "TimePicker");

                }
            }
        });
public class TimePick extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
   EditText time;

    public TimePick(View view)
    {
       time=(EditText)view;
    }

    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        final Calendar c= Calendar.getInstance();
        int hour=c.get(Calendar.HOUR_OF_DAY);
        int minute=c.get(Calendar.MINUTE);
        return new TimePickerDialog(getActivity(),this,hour,minute, DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view,int hourofDay, int minute)
    {

        time.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
    }


}
TimePick.java

        EditText TimeIn = (EditText) findViewById(R.id.editText6);
        EditText TimeOut = (EditText) findViewById(R.id.editText7);
        TimeIn.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    TimePick time = new TimePick(v);
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    time.show(ft, "TimePicker");
                }
            }
        });


        TimeOut.setOnFocusChangeListener(new View.OnFocusChangeListener(){
            @Override
            public void onFocusChange(View v,boolean hasFocus) {
                if (hasFocus) {
                    TimePick time = new TimePick(v);
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    time.show(ft, "TimePicker");

                }
            }
        });
public class TimePick extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
   EditText time;

    public TimePick(View view)
    {
       time=(EditText)view;
    }

    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        final Calendar c= Calendar.getInstance();
        int hour=c.get(Calendar.HOUR_OF_DAY);
        int minute=c.get(Calendar.MINUTE);
        return new TimePickerDialog(getActivity(),this,hour,minute, DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view,int hourofDay, int minute)
    {

        time.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
    }


}
workdetails.xml

<EditText
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText6"
        android:layout_x="147dp"
        android:layout_y="170dp"
        android:hint="Select Time"
        android:clickable="true"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Time In"
        android:id="@+id/textView7"
        android:layout_x="23dp"
        android:layout_y="184dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Time out"
        android:id="@+id/textView8"
        android:layout_x="23dp"
        android:layout_y="247dp" />

    <EditText
        android:layout_width="143dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText7"
        android:layout_x="147dp"
        android:layout_y="241dp"
        android:hint="Select Time"/>

您可以使用(.)点>>计算一天中的小时数,然后将其解析为浮点>>并进行更改。下面是一个工作代码片段

        float end = Float.parseFloat("21.00");
        float start = Float.parseFloat("10.00");

        System.out.println(end-start);
更改您的方法,如:

public void onTimeSet(TimePicker view,int hourofDay, int minute)
    {

        time.setText(Integer.toString(hourofDay) + "." + Integer.toString(minute));
    }
然后从
editText.gettext()获取值

编辑:

将您的
TimeIn
editText变量设置为静态,并在如下设置超时时获取其值

    public void onTimeSet(TimePicker view,int hourofDay, int minute)
        {

            time.setText(Integer.toString(hourofDay) + "." + Integer.toString(minute));

          if(time.getId==R.id.editText7){
            if(YourActivity.TimeIn !=null){
            String timeIn = YourActivity.TimeIn.getText().toString();

            float end = Float.parseFloat(time.getText().toString);
            float start = Float.parseFloat(timeIn);

            System.out.println(end-start);
           // do what you need with your calculated hours
         }
        }
        }

使用计时器选择器Id尝试开关和机箱

     public void onTimeSet(TimePicker view,int hourofDay, int minute)
                {
                  int start,end,remains;
                  switch(view.getId()){
                       case R.id.editText6: 
                                   time.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
                                   start=hourofDay;
                                   break;
                       case R.id.editText7: 
                                   time.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
                                   end=hourofDay;
                                   break;
                                    }
                        //Use can declare remains globlally and use where you want
                         remain=end-start;

                 }

使用(.)>>将小时和分钟转换为浮点>>执行计算。。注。。时间应该是24小时制。你能解释更多吗?谢谢,但是既然结束值和开始值在同一个函数(onTimeSet)中,我怎么才能得到它们呢。。。在某个按钮上单击?我希望它是自动的..在用户选择time in和time out之后,它将显示总小时数--假设我得到time in的一个值和time out的另一个值。如何将它们传递到一个函数中?在
YourActivity
中设置
EditText TimeIn
静态,并在
onTimeSet()中获取
TimeIn
的值,同时设置
TimeOut
。。。查看编辑。如何从editText 6和editText 7获取总小时数?在版面中使用
Timepicker
,而不是
editText
,并在活动中初始化