学习ADT,主要来自xCode和Linux(首选Nano),来自C / HTML / CSS / JS背景。我有一些麻烦适应,并希望我可以得到一些指示如何围绕这些非常简单的第一步的差异。
我正在使用Wagied Davids“Android Cookbook”示例中的一个非常常见的变体:
http://androidbite.blogspot.com/2012/11/android-count-down-timer-example.html
我自己分配的任务是使用它作为一个简单的egg-timer应用程序(返回到FroYo)的基础,用户在EditText中输入他们想要倒计时的时间(而不是固定的30秒)。 )
我对布局进行了以下更改:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/instruction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Enter countdown time:"
android:textSize="25sp" />
<TextView
android:id="@+id/timer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:paddingRight="10dip"
android:textSize="50dp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:padding="10dip"
android:text="Start" />
<--Here's the part I added, SO!-->
<EditText
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/instruction"
android:layout_centerHorizontal="true"
android:ems="10"
android:imeOptions="actionGo"
android:inputType="number" />
</RelativeLayout>
但主要的java活动的下一步使我失望。我将startTime
的定义从public long
更改为private final long
,并且基本上使用了一大堆代码:
//get countdown interval from user
EditText myEdit = (EditText) findViewById(R.id.time);
//convert edit text to string
String numString = myEdit.getText().toString();
//convert string to integer
myInt = Integer.parseInt(numString);
//convert integer to long number of milliseconds
long localStartTime = (Long.valueOf(myInt) * 1000);
我已经尝试在活动文件中创建自己的类并返回localStartTime
然后将其分配给startTime
,从崩溃的onCreate
和onClick
(从最初定义的startTime
值开始倒计时)调用它。)我也是尝试将其作为onCreate
中的直接代码段,因此最后一行看起来像:
startTime = (Long.valueOf(myInt) * 1000);
在致电countDownTimer = new MyCountDownTimer(startTime, interval);
之前,这又让您输入文字,但不会从我认为已分配给startTime
变量的内容开始倒计时。
我还尝试了一下Ken Wolf答案的变体:
Android java EditText to int
将try-and-catch放在onCreate
中,但是当您点击开始按钮时,可以再次输入一个时间而不会倒计时。
如果您已经选择阅读所有这些,谢谢,我会请求您在回答这个问题时专注于两件事。首先,对于经验丰富的Java程序员来说,这看起来很简单,您会如何处理?其次,对于我正在考虑的C / JavaScript思维模式中缺少的Android Java的思考方式是什么?
谢谢。
答案 0 :(得分:0)
我找到了你的问题,因为我在倒数计时器时遇到了另一个问题。如果您只是想让计时器使用用户输入和开始时间,则以下内容可能有用。倒计时器显然只接受longs作为开始时间。
EditText timetocountdown = (EditText)findViewById(R.id.userinput);
String tmrstring = timetocountdown.getText().toString();
Long A = Long.parseLong(tmrstring);
startTime = (A * 60000);
countDownTimer = new MyCountDownTimer( startTime, interval);
countDownTimer.start();
timerHasStarted = true;