我构建了一个简单的计时器应用程序,我想让它可编辑,以便用户可以选择小时,分钟,秒。我尝试使用EditText但它并没有真正起作用它不是真的让我改变任何东西。 这是代码:
的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_stopwatch"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.adir.stopwatch.StopwatchActivity"
android:background="#000000"
>
<Button
android:id="@+id/reset_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickReset"
android:text="@string/reset"
android:textColor="#FFFFFF"
android:layout_below="@+id/stop_button"
android:layout_alignLeft="@+id/stop_button"
android:layout_alignStart="@+id/stop_button" />
<EditText
android:id="@+id/time_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="92sp"
android:textColor="#FFFFFF"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/start_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickStart"
android:text="@string/start"
android:textColor="#FFFFFF"
android:layout_below="@+id/time_view"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp" />
<Button
android:id="@+id/stop_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickStop"
android:text="@string/stop"
android:textColor="#FFFFFF"
android:layout_alignLeft="@+id/start_button"
android:layout_alignStart="@+id/start_button"
android:layout_below="@+id/start_button"></Button>
</RelativeLayout>
Java代码:
public class StopwatchActivity extends Activity {
private int seconds=0;
private boolean running;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stopwatch);
runTimer();
}
public void onClickStart(View view) {
running = true; }
public void onClickStop(View view) {
running = false;
}
public void onClickReset(View view) {
running = false;
seconds = 0;
}
private void runTimer() {
final EditText timeView = (EditText) findViewById(R.id.time_view);
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
int hours=seconds/3600;
int minutes=(seconds%3600)/60;
int secs=seconds%60;
String time = String.format("%d:%02d:%02d",hours, minutes, secs);
timeView.setText(time);
if (running) {
seconds--;
}
handler.postDelayed(this, 1000);
}
});
}
}
我该如何解决?
答案 0 :(得分:0)
问题非常简单:您将EditText
投射到TextView
,从而失去了编辑它的能力。这不会给您一个错误,因为EditText
是TextView
的子类。您需要更改行
final TextView timeView = (TextView) findViewById(R.id.time_view);
到
final EditText timeView = (EditText) findViewById(R.id.time_view);
一切都应该有效。