- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于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/
我在运行 GNU Visual Debugger 1.2.6 的 XP 虚拟机上尝试打开 Ada 文件 (.adb),但不断出现以下错误: not in executable format: File
我正在尝试获取 io:format/1 的输出结果。 我知道io_lib中也有类似的函数,io_lib:format/2,但是输出不一样。事实上,它根本没有做任何事情。 如果我尝试绑定(bind) i
我在 documentation 中找不到任何内容, 甚至 BreakBeforeBraces: Allman格式化我已经拆分的单行函数 void foo() { bar(); } 我想要类似的东西
请考虑函数f: open Format let rec f i = match i with | x when x () | i -> pp_open_hovbox std_form
如何在列表中的每三个参数后添加一个回车符(使用 ~%)? 例如,我现在: (format nil "~{~a ~}" (list '"one" '"two" '"three" '"four" '"fi
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
当我尝试在 Ubuntu 上编译 fprintf(stderr,Usage) 时,我遇到了这个错误: error: format not a string literal and no format
运行 cv2.getRectSubPix(img, (5,5), (0,0)) 抛出错误: OpenCV Error: Unsupported format or combination of for
我正在 cocos2d-x-2.1.4 上开发游戏,但是,当我尝试在 Android 上构建它时,它失败并出现错误:格式不是字符串文字且没有格式参数 [-Werror=format-安全] 在文件 C
运行时: $ clang-format -style=Google -dump-config > .clang-format 文件后附有省略号 (...)。 TabWidth: 8 Us
我想在纯函数中将 double 型转换为字符串。我很困惑为什么这不是纯粹的: wstring fromNumber(double n) pure { import std.format;
Common Lisp 的 format 是否有一个特别容易阅读的实现? 我找到了 SBCL's version ,但由于 SBCL 以 性能 Common Lisp 实现而著称,我想知道是否有一个更
嗨,我正在尝试在 JSP 页面上格式化字符串,它给了我错误,正如我在标题中提到的,我的代码是, String header=""; header = 12-29-2011 15;
clang-format 将我的行拆分为 80 列。有没有办法让停止断线? documentation似乎没有解决这个问题。 最佳答案 负责它的配置选项称为 ColumnLimit .您可以通过将其设
我有一个Angular 11项目,试图集成SpreadJS Designer,但在ngcc步骤Compiling @grapecity/spread-sheets-designer-angular :
我正在使用 clang-format 4.0.0来对齐我的个人项目。 我将以下配置用于 clang-format 。 Language: Cpp BreakBeforeBraces: A
我正在使用- char str[200]; ... sprintf(str,"%s", val) msg(str); sprintf(str, "%s: %s",timestr,"\n recv -"
我有这个 double 值: var value = 52.30298270000003 当我将它转换为 string 时,它失去了它的精度: var str = string.Format("{0}
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
如何使用 clang-format 始终将冒号左对齐。我不希望它被禁用:1234,但禁用:1234。 #pragma warning(disable: 1234) 最佳答案 我猜你需要这个。 Spac
我是一名优秀的程序员,十分优秀!