2016-10-22 3 views
-1

Я создаю простое приложение таймера, и я хочу сделать его редактируемым, чтобы пользователь мог набирать час, минуты, секунды. Я попытался использовать EditText, но это не работает, это не позволяет мне что-то менять. это код:Создайте таймер, на котором вы можете редактировать андроид (Java)

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

Использование EditText или TimePicker – Gumbo

+0

@Gumbo Я попытался использовать EditText, но на самом деле он не работал, он просто показал, что он доступен для редактирования, но не дал возможность изменять вещи. – adir

+0

Что касается StackOverflow, так это то, что это предназначенный только для конкретных вопросов, который поддерживает цель беседы. Если вы просто спросите: «Как я могу сделать xyz», ответ будет либо длинным, либо потому, что обычно есть десятки способов сделать xyz, или не очень полезно. Поэтому, если у вас есть очень специфическая проблема с использованием EditText, вы можете задать его здесь, но этот вопрос не соответствует правилам, и, таким образом, люди вас нивелируют. Дополнительную информацию см. В [help]. – Gumbo

ответ

0

Проблема очень проста: вы набрасываете EditText на TextView, тем самым теряя способность редактировать его. Это не дает вам ошибки, потому что EditText является подклассом TextView. Вам нужно изменить строку

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

в

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

и все должно работать.

+0

это позволяет мне редактировать, но как только я нажимаю, например, 4, он удаляет его и возвращается к 0..это не удаляет 0, просто добавляет номер, который я пишу. – adir

+0

прямо сейчас часы выглядят как 0:00:00 после того, как я напишу 4, это смена секунды до 40:00:00 и возврат к 0:00:00 .. и большое вам спасибо за помощь мне мужчин – adir

+0

Да, это происходит из-за того, что таймер работает во время редактирования и возвращает текст на текущее количество секунд – Gumbo

Смежные вопросы