有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:使用EditText值中的按钮设置开始值

我刚刚开始与Android Studio合作,希望通过Button Clickevent创建一个具有可设置开始值的倒计时程序。 到目前为止,我的代码是:`

private static final String TAG = "MSchlanstedt";
private int number;
boolean status = true;
private CountDownTimer myTimer;

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

    final ProgressBar bar = (ProgressBar)findViewById(R.id.progressBar);
    final EditText Time = (EditText)findViewById(R.id.text);
    final Button Button = (Button)findViewById(R.id.start);
    final TextView textView = (TextView)findViewById(R.id.textView);

    Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (status == true)
            {
                Button.setText("Stop");
                number = Integer.valueOf(Time.getText().toString())*1000;
                myTimer.start();
                status = false;
                Log.d(TAG, "Button.onClick():Start " + number);
            }else
            {
                myTimer.cancel();
                Button.setText("Start");
                Log.d(TAG, "Button.onClick():Stop " + number);
                status = true;
            }

        }
    });

    myTimer = new CountDownTimer(number,1000) {
        public void onTick(long millisUntilFinished)
        {
            Log.v(TAG,"CountDownTimer.onTick(): sUntilFinished: "+number+"/"+ millisUntilFinished /1000);
            textView.setText(String.valueOf(millisUntilFinished/1000));
        }
        public void onFinish()
        {
            Log.v(TAG,"CountDownTimer.onFinish()");
        }
    }.start();
}

`

我的问题是,按钮在文本开始和停止之间切换,但倒计时不会从我的整数开始。如果我将起始值设置为3000,它将完美启动

我的问题是,我如何获得EditText的值作为反击的起始值

这是我关于stackoverflow的第一个问题,所以请耐心对待我和我糟糕的英语


共 (1) 个答案

  1. # 1 楼答案

    创建一个方法

    private void showCountDownTimer(int number) {
        myTimer = new CountDownTimer(number, 1000) {
                public void onTick(long millisUntilFinished)
                {
                    Log.v(TAG,"CountDownTimer.onTick(): sUntilFinished: "+number+"/"+ millisUntilFinished /1000);
                    textView.setText(String.valueOf(millisUntilFinished/1000));
                }
                public void onFinish()
                {
                    Log.v(TAG,"CountDownTimer.onFinish()");
                }
        }.start();
    }
    

    然后叫它进来onClick

    Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (status == true)
                {
                    Button.setText("Stop");
                    number = Integer.valueOf(Time.getText().toString())*1000;
                    showCountDownTimer(number);
                    status = false;
                    Log.d(TAG, "Button.onClick():Start " + number);
                }else
                {
                    myTimer.cancel();
                    Button.setText("Start");
                    Log.d(TAG, "Button.onClick():Stop " + number);
                    status = true;
                }
    
            }
        });
    

    解释:

    因为在onCreate中初始化myTimer(倒计时),所以number的默认值为0。您应该动态地初始化它(当您获得值时)