2016-02-24 5 views
-1

У меня проблема с кнопкой, чтобы быть невидимой, когда я хочу. В моем утверждении if я объявил, что упражнениеButtonDone первым невидимым, но затем после последнего обратного отсчета я хочу, чтобы он стал видимым.Хочу, чтобы кнопка была видимой после невидимости

Поскольку мой код прямо сейчас, кнопка видна все время.

package org.example.anders.eazy; 

import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.app.Activity; 
import android.os.CountDownTimer; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.os.Vibrator; 
import java.util.concurrent.TimeUnit; 

public class ExerciseActivity extends Activity { 

    String[] exerciseList; 
    TextView textTimer,workoutTextview,exerciseTextView; 
    int setsChosen; 
    int counter = 0; 
    int timeChosen; 
    boolean togglebuttonpress; 
    Button exerciseButtonDone; 
    @Override 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     exerciseList = getResources().getStringArray(R.array.heavy_chest_arms); 

     setContentView(R.layout.activity_exercise); 
     exerciseButtonDone=(Button)findViewById(R.id.buttonActiveExcercise); 
     Intent intent = getIntent(); 
     String selectedWorkout = intent.getExtras().getString("workoutName"); 
     togglebuttonpress=intent.getExtras().getBoolean("togglebuttonPress"); 

     textTimer = (TextView) findViewById(R.id.timeUntilFinished); 
     //workoutTextview = (TextView) findViewById(R.id.workoutChosen); 
     //workoutTextview.setText(selectedWorkout); 
     if(togglebuttonpress){ 
      exerciseButtonDone.setVisibility(View.INVISIBLE); 
      setsChosen =intent.getExtras().getInt("setsChosen"); 
      int timePass = intent.getExtras().getInt("timeChosen"); 
      timeChosen=timePass; 
      counter = 0; 
      runCountDownTimer(); 
      exerciseButtonDone.setVisibility(View.VISIBLE); 
     } 

     else { 

      textTimer.setText(""); 
      exerciseButtonDone.setVisibility(View.VISIBLE); 
     } 


     //exerciseTextView= (TextView) findViewById(R.id.exerciseNow); 
     //exerciseTextView.setText(exerciseList[i]); 

    } 

    public void runCountDownTimer() { 

     if (counter < setsChosen) { 
      new CountDownTimer(timeChosen * 60000, 1000) { 

       @Override 
       public void onTick(long millisUntilFinished) { 
        long millis = millisUntilFinished; 
        String hms = String.format("%02d:%02d", 
          TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), 
          TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
        System.out.println(hms); 
        textTimer.setText(hms); 
       } 

       @Override 
       public void onFinish() { 
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
        counter++; 
        v.vibrate(500); 
        runCountDownTimer(); 
       } 
      }.start(); 
     } 
     textTimer.setText("Complete"); 

    } 
} 
+0

Что представляет собой переменная toggleButtonPress? – Eenvincible

+0

Это пройденное логическое значение из предыдущей активности. –

+0

УпражнениеButtonDone.setVisibility (View.VISIBLE); должен быть на else if (counter Alex

ответ

1

Вы устанавливаете кнопку невидимой, а затем сразу же видны.

if(togglebuttonpress){ 
     exerciseButtonDone.setVisibility(View.INVISIBLE); 
     ... 
     exerciseButtonDone.setVisibility(View.VISIBLE); 
    } 

движение exerciseButtonDone.setVisibility(View.VISIBLE); от текущего местоположения, где таймер обратного отсчета фактически заканчивается, что я теперь вижу runCountDownTimer()

if (counter < setsChosen) { 
    new CountDownTimer(timeChosen * 60000, 1000) { 
     ... 
    } 
} else { 
    exerciseButtonDone.setVisibility(View.VISIBLE); 
} 

вам все равно нужно сделать execerciseButtonDonefinal ... и переместить его правильный объем, спасибо alex. Это должна быть переменная класса, например: boolean togglebuttonpress;

Вы снова можете сделать findViewById, но это лишнее и ненужное.

+0

Когда я это делаю, я получаю сообщение, когда вы нанимаете над exerciseButtonDone.setVisibility (View.VISIBLE); что не удается разрешить символ «exerciseButtonDone» –

+0

Поскольку вы деблокировали свою кнопку в методе onCreate .... Базовая java .... Я настоятельно рекомендую начать изучать некоторые Java, прежде чем приступать к программированию на Android. – Alex

+0

Проблема, если я устанавливаю exerciseButtonDone.setVisibility (View.VISIBLE); под runCountDownTimer(); что я не хочу показывать кнопку до тех пор, пока обратный отсчет не перестанет зацикливаться. После первого цикла появляется кнопка и начинается обратный отсчет. –

0

Я добавил инструкцию if, которая проверила, был ли цикл выполнен. Это сработало.

public void onFinish() { 
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
        counter++; 
        v.vibrate(500); 
        runCountDownTimer(); 
        if (counter == setsChosen) 
        { 
         exerciseButtonDone.setVisibility(View.VISIBLE); 
        } 
       }