gpt4 book ai didi

java - 如何在 (mm :ss) format using editText?

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:07 26 4
gpt4 key购买 nike

对于java我完全是个新手。我以研究学习和人类行为为生,需要一个具有两种类型计时器的应用程序。

这些计时器将存在于 fragment 中。

第一种类型的计时器将接受用户输入(间隔 - 分钟、秒或两者)并倒计时。当达到零时,该计时器将重置为原始输入值并重新开始。用户还可以选择点击“重置”按钮,从原始输入值启动计时器(例如,如果输入的数字 = 5、5-4-3-2-1-0-5-4-3-reset-5-4-3-2-1-0)

第二种类型的计时器将再次接受用户输入。当计时器启动时,它将从两个输入值之间的数字开始倒计时。用户可以选择点击“重置”按钮,从 0 到输入的数字之间的新数字启动计时器(例如,如果输入的数字范围 = 3 和 7,则为 4-3-2-1-0-6-5-4-reset-1-0-7-6-reset-2-1-0。)

现在我有一个以分钟为单位从固定间隔倒计时的计时器,但用户只能输入分钟,而不是秒(例如,如果按下“1”,则设置 01:00,如果按下“130”,则仍设置 01:00。我希望用户可以选择设置 01:30 或 00:30。)

任何帮助将不胜感激!

除了花过去 6 小时观看 YouTube 视频、阅读论坛和浏览 Android 开发者网站之外,我还尝试调整 int 分钟 = (int) (TimeLeftInMillis) 和 int 秒 ""的除数,我尝试更改 long millisInput = Long.parseLong(input) * 值中的乘法值。我也尝试过提示和咒骂。

mButtonSet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(android.view.View view) {
String input = mEditTextInput.getText().toString();
if (input.length() == 0) {
Toast.makeText(getActivity(), "Fill it in, loser", Toast.LENGTH_SHORT).show();
return;
}

long millisInput = Long.parseLong(input) * 60000;
if (millisInput == 0) {
Toast.makeText(getActivity(), "Please enter a positive number", Toast.LENGTH_SHORT).show();
return;
}

private void startTimer() {
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 100) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}

private void updateCountDownText() {
int minutes = (int) (mTimeLeftInMillis / 1000)/60;
int seconds = (int) (mTimeLeftInMillis / 1000)% 60;

String timeLeftFormatted = String.format(Locale.getDefault(),

timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds));
mTextViewCountdown.setText(timeLeftFormatted);

最佳答案

一般来说,Edittexts 不能接受多个输入,因此我们需要一个解决方法。方案一:选择约束用户以mm:ss格式输入,解析如下:

 String input[] = mEditTextInput.getText().toString().split(":");
//input[0] is minutes and input[1] is seconds

选项 2:使用两个 Edittext,一个并排,两个之间有一个 Textview,其中包含字符串“:”,并按如下方式获取输入:

 String input1 = mEditTextInput.getText().toString();
String input2 = mEditTextInput2.getText().toString();

选项 3:使用简单的 Textview,并检测用户的按键来填充值。您还需要变量来检测到目前为止有效按下的次数(输入数字时增加,按 x 键时减少)。比如,Textview 中的初始值为 00:00,当检测到按键“1”时,您可以使用以下代码来显示它:

String str=getKey();
String str2=mTextView.getText().toString();
if(numKey==0)//numkey is the number of valid presses
{
String toSet="0"+str+":00";
mTextView.setText(toSet);
}
else if(numKey==1)
{
String toSet=str+str2.substring(1);
mTextView.setText(toSet);
}
//and so on...

getKey()函数可以实现如下:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {

switch (keyCode) {
case KeyEvent.KEYCODE_A:
{
//your Action code
return true;
}
}
return super.onKeyDown(keyCode, event);
}

事实上,您可以删除该行

String str=getKey();

并且代替操作,您可以简单地调用函数(例如 formatTextView)并将 key 作为参数传递给它,这将负责设置 textView。最后,使用 mTextView.getText().toString();

根据需要取回您的值

注意:如果您的 fragment 有任何其他 Edittext,选项 3 将不起作用,因为这将消耗 onKeyPressed 事件。

希望这对你有帮助:)

关于java - 如何在 (mm :ss) format using editText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com