Android TimePickerDialog가 실제 카운트 다운 타이머를 통과하지 않고 선택한 시간

에릭 패터슨

내 카운트 다운 타이머를 설정하기 위해 시간 선택기 대화 상자를 가져 오는 중입니다. 여러 가지 결과로 여러 가지 방법을 시도해 보았습니다 ... 어느 것도 제대로 작동하지 않았습니다. 아래에 넣을 몇 가지 기본 코드로 실험하기로 결정했습니다.

선택한 시간 (아래 코드에서 selectedStartTime이라고 함)을 실제 카운트 다운 타이머에 startTime으로 전달할 수 없습니다. 미리 설정된 startTime = 10000 (또는 임의의 숫자)을 사용할 때만 타이머가 제대로 작동하도록 할 수 있습니다. startTime이 설정된 숫자가되는 것을 원하지 않습니다. 시간 선택기 상자의 OnTimeSetListener에서 가져와야합니다.

대화 상자에서 선택한 시간이 실제로 타이머에 사용되도록 코드를 변경하는 방법을 보여줄 수있는 모든 사람에게 영원히 감사하겠습니다.

다음에 대한 완전한 XML 코드 : activity_simple_timer_test.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<Button
    android:id="@+id/button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Start" />

<TableLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:padding="10dip">

    <TableRow>

        <TextView
            android:id="@+id/timer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="10dip"
            android:text="Time: " />

        <TextView
            android:id="@+id/timeElapsed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="10dip"
            android:text="Time elapsed: " />
    </TableRow>
</TableLayout>
</LinearLayout>

완전한 Java 코드 : SimpleTimerTest.java

package com.YOURPACKAGE INFO;

import android.app.Activity;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class SimpleTimerTest extends Activity implements OnClickListener {

private MalibuCountDownTimer countDownTimer;
private long timeElapsed;
private boolean timerHasStarted = false;
private Button startB;
private TextView text;
private TextView timeElapsedView;
int selectedStartTime;
// don't want to use a predefined startTime
private final long startTime = 10000;
private final long interval = 1000;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_simple_timer_test);
    startB = (Button) this.findViewById(R.id.button);
    startB.setOnClickListener(this);

    text = (TextView) this.findViewById(R.id.timer);
    timeElapsedView = (TextView) this.findViewById(R.id.timeElapsed);
    countDownTimer = new MalibuCountDownTimer(startTime, interval);
    text.setText(text.getText() + String.valueOf(startTime));
}

TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        selectedStartTime = ((hourOfDay*3600000)+(minute*60000));
        // I can't get this variable to pass through into the countdown timer
    }
};

@Override
public void onClick(View v)   {

    TimePickerDialog d = new TimePickerDialog(SimpleTimerTest.this, onTimeSetListener, 1, 0, true);
    d.setTitle("Pick Sleep Duration   hour:min");
    d.setCancelable(true);
    d.setButton(DialogInterface.BUTTON_POSITIVE, "Start", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_POSITIVE) {

                if (!timerHasStarted) {
                    countDownTimer.start();
                    timerHasStarted = true;
                    startB.setText("Stop");
                } else {
                    countDownTimer.cancel();
                    timerHasStarted = false;
                    startB.setText("Timer was already running");
                }
            }
        }
    });
    d.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_NEGATIVE) {
                countDownTimer.cancel();
                timerHasStarted = false;
                startB.setText("Restart");
            }
        }
    });
    d.show();
}

public class MalibuCountDownTimer extends CountDownTimer    {
    public MalibuCountDownTimer(long startTime, long interval)
    {
        super(startTime, interval);
    }
    @Override
    public void onFinish()        {
        text.setText("Time's up!");
        timeElapsedView.setText("Time Elapsed: " + String.valueOf(startTime));
        Toast toast = Toast.makeText(getApplicationContext(), "finished", Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
    }
    @Override
    public void onTick(long millisUntilFinished)        {
        text.setText("Time remain:" + millisUntilFinished);
        timeElapsed = startTime - millisUntilFinished;
        timeElapsedView.setText("Time Elapsed: " + String.valueOf(timeElapsed));
    }
}
} 
dtx12

나는 당신이 달성하려는 것이 무엇인지 잘 모르겠습니다. MalibuCountDownTimerin 메소드의 인스턴스를 생성하십시오 onTimeSet.이 메소드는 사용자가 시간을 선택할 때만 호출됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

카운트 다운 타이머 Android에서 분과 시간을 업데이트하지 않음

분류에서Dev

카운트 다운 타이머 Android에서 분과 시간을 업데이트하지 않음

분류에서Dev

Android의 시간 선택기에서 시간을 선택하면 카운트 다운 타이머를 시작합니다.

분류에서Dev

카운트 다운 타이머는 분과 초가 0 일 때 시간을 줄이지 않습니다.

분류에서Dev

시간을 표시하지 않는 카운트 다운 타이머

분류에서Dev

카운트 다운 타이머 카운터가 작동하지 않음

분류에서Dev

신속한 라이브 카운트 다운 타이머에 시간을 추가하는 방법

분류에서Dev

카운트 다운 타이머가 중지되지 않음

분류에서Dev

자바 스크립트를 사용한 실시간 양식 카운트 다운 타이머

분류에서Dev

오류 : 자바 스크립트 카운트 다운 타이머가 카운트 다운하지 않습니다.

분류에서Dev

Android의 UI에 영향을주지 않고 RecyclerView 내에서 카운트 다운 타이머를 설정하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

타이머가 0으로 카운트 다운하면 양식이 제출되지 않습니다.

분류에서Dev

JQuery 카운트 다운 타이머가 카운트 다운되지 않습니다.

분류에서Dev

자바 스크립트에서 카운트 다운 타이머가 다시 시작되지 않도록 중지

분류에서Dev

카운트 다운 타이머에 형식 시간 / 분 / 초를 추가하는 방법

분류에서Dev

(자바 스크립트) 선택 옵션에 카운트 다운 타이머를 추가하는 방법

분류에서Dev

카운트 업 타이머가 오류를 설정하지 않습니다.

분류에서Dev

안드로이드 : TimePickerDialog는 사용자가 과거 시간을 선택하지 못하게하고 새로운 날짜로 미래 시간을 선택할 수 있습니다

분류에서Dev

간격 타이머를 사용하여 카운트 증가

분류에서Dev

카운트 다운 타이머가 작동하지 않습니다.

분류에서Dev

카운트 다운 타이머가 작동하지 않습니다.

분류에서Dev

곧 페이지를 만드는 동안 카운트 다운 타이머가 작동하지 않습니다.

분류에서Dev

카운트 다운 타이머를 추가하는 방법

분류에서Dev

Android-시간이 감소하는 카운트 다운

분류에서Dev

고르지 않은 카운트 다운 타이머 수정

분류에서Dev

카운트 다운 타이머가 꺼지는 동안 게임 일시 중지 해제

분류에서Dev

주어진 값에서 시작하지 않는 카운트 다운 타이머

분류에서Dev

tkinter에서 카운트 다운 타이머가 업데이트되지 않음

분류에서Dev

분 / 초 카운트 다운 타이머가 작동하지 않습니까?

Related 관련 기사

  1. 1

    카운트 다운 타이머 Android에서 분과 시간을 업데이트하지 않음

  2. 2

    카운트 다운 타이머 Android에서 분과 시간을 업데이트하지 않음

  3. 3

    Android의 시간 선택기에서 시간을 선택하면 카운트 다운 타이머를 시작합니다.

  4. 4

    카운트 다운 타이머는 분과 초가 0 일 때 시간을 줄이지 않습니다.

  5. 5

    시간을 표시하지 않는 카운트 다운 타이머

  6. 6

    카운트 다운 타이머 카운터가 작동하지 않음

  7. 7

    신속한 라이브 카운트 다운 타이머에 시간을 추가하는 방법

  8. 8

    카운트 다운 타이머가 중지되지 않음

  9. 9

    자바 스크립트를 사용한 실시간 양식 카운트 다운 타이머

  10. 10

    오류 : 자바 스크립트 카운트 다운 타이머가 카운트 다운하지 않습니다.

  11. 11

    Android의 UI에 영향을주지 않고 RecyclerView 내에서 카운트 다운 타이머를 설정하는 가장 좋은 방법은 무엇입니까?

  12. 12

    타이머가 0으로 카운트 다운하면 양식이 제출되지 않습니다.

  13. 13

    JQuery 카운트 다운 타이머가 카운트 다운되지 않습니다.

  14. 14

    자바 스크립트에서 카운트 다운 타이머가 다시 시작되지 않도록 중지

  15. 15

    카운트 다운 타이머에 형식 시간 / 분 / 초를 추가하는 방법

  16. 16

    (자바 스크립트) 선택 옵션에 카운트 다운 타이머를 추가하는 방법

  17. 17

    카운트 업 타이머가 오류를 설정하지 않습니다.

  18. 18

    안드로이드 : TimePickerDialog는 사용자가 과거 시간을 선택하지 못하게하고 새로운 날짜로 미래 시간을 선택할 수 있습니다

  19. 19

    간격 타이머를 사용하여 카운트 증가

  20. 20

    카운트 다운 타이머가 작동하지 않습니다.

  21. 21

    카운트 다운 타이머가 작동하지 않습니다.

  22. 22

    곧 페이지를 만드는 동안 카운트 다운 타이머가 작동하지 않습니다.

  23. 23

    카운트 다운 타이머를 추가하는 방법

  24. 24

    Android-시간이 감소하는 카운트 다운

  25. 25

    고르지 않은 카운트 다운 타이머 수정

  26. 26

    카운트 다운 타이머가 꺼지는 동안 게임 일시 중지 해제

  27. 27

    주어진 값에서 시작하지 않는 카운트 다운 타이머

  28. 28

    tkinter에서 카운트 다운 타이머가 업데이트되지 않음

  29. 29

    분 / 초 카운트 다운 타이머가 작동하지 않습니까?

뜨겁다태그

보관