创建一个可以编辑android(Java)的计时器

时间:2016-10-22 18:30:04

标签: java android xml timer

我构建了一个简单的计时器应用程序,我想让它可编辑,以便用户可以选择小时,分钟,秒。我尝试使用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);
            }
        });  
    }  
}

我该如何解决?

1 个答案:

答案 0 :(得分:0)

问题非常简单:您将EditText投射到TextView,从而失去了编辑它的能力。这不会给您一个错误,因为EditTextTextView的子类。您需要更改行

final TextView timeView = (TextView) findViewById(R.id.time_view);

final EditText timeView = (EditText) findViewById(R.id.time_view);

一切都应该有效。