java - Android numberPicker to countdownTimer
问题描述
我想将 numPicker 的值设置为 countdowntimer 按钮以启动和取消,但它不起作用。
public class TimeManager extends AppCompatActivity {
private NumberPicker np1 = null;
private NumberPicker np2 = null;
private Button bt1 = null;
private Button bt2 = null;
private Button bt3 = null;
private TextView tv = null;
private final long t1 = np1.getValue() * 3600*1000;
private final long t2 = np2.getValue() * 60;
private CountDownTimer cdt;
@RequiresApi(api = Build.VERSION_CODES.Q)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_time_manager);
np1 = (NumberPicker) findViewById(R.id.numPicker);
np2 = (NumberPicker) findViewById(R.id.numPicker2);
bt1 = (Button) findViewById(R.id.button2);
bt2 = (Button) findViewById(R.id.button4);
bt3 = (Button) findViewById(R.id.button5);
tv = (TextView) findViewById(R.id.textView4);
np1.setOnValueChangedListener(nplis1);
np2.setOnValueChangedListener(nplis2);
bt1.setOnClickListener(btlis1);
bt2.setOnClickListener(btlis2);
bt3.setOnClickListener(btlis3);
np1.setMinValue(0); //設定最小值
np1.setMaxValue(23); //設定最大值
np1.setValue(1); //設定現值
np1.setWrapSelectorWheel(true);
np1.setTextSize(60f);
np2.setMinValue(0); //設定最小值
np2.setMaxValue(59); //設定最大值
np2.setValue(1); //設定現值
np2.setWrapSelectorWheel(true);
np2.setTextSize(60f);
cdt = new CountDownTimer(t1 + t2, 1000) {
@Override
public void onTick(long millisUntilFinished) {
long t3 = millisUntilFinished / 1000;
tv.setEnabled(false);
tv.setText(t3 + "秒");
}
@Override
public void onFinish() {
tv.setEnabled(true);
tv.setText("重新发送");
cancel();
}
};
}
NumberPicker.OnValueChangeListener nplis1 = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
String value = "" + newVal;
}
};
NumberPicker.OnValueChangeListener nplis2 = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
int nowValue = np2.getValue(); //取得現值
}
};
View.OnClickListener btlis1 = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent it = new Intent(TimeManager.this, Home.class);
startActivity(it);
}
};
View.OnClickListener btlis2 = new View.OnClickListener() {
@Override
public void onClick(View v) {
cdt.start();
}
};
View.OnClickListener btlis3 = new View.OnClickListener() {
@Override
public void onClick(View v) {
cdt.cancel();
}
};
}
解决方案
推荐阅读
- sql - 如何解析 json 格式的 Hadoop 表。我只想在 Hadoop 中对其进行格式化
- ipv6 - 将 IPV6 转换为 IPV4 垂直
- spartacus-storefront - 有没有办法让包装器 div/container 将 CMS 组件分组到插槽中?
- python - find_elements - Selenium (Python):如何填充空值(或其他值)而不是空白
- c# - 从 Web API 响应中读取访问令牌值时出错
- java - 如何(仅)使用 Eclipse Milo OpcUa 服务器更新 OPC UA 节点的时间戳?
- highcharts - 类别 Highcharts 小部件中的任何元素都是链接
- angular - rxjs - 在两个不同的订阅中更改单个数据 - 使反应更灵敏
- java - Java:从其他类引用对象时找不到符号
- python - 我如何知道我的神经网络模型是否过拟合(Keras)