Wątek przeniesiony 2017-10-07 20:06 z Java przez Koziołek.

Anulowanie pierwszego odliczania po uruchomieniu drugiego

0

Witam. W mojej aplikacji po otwarciu się activity startuje odliczanie. Jeżeli użytkownik wciśnie buttona, to startuje drugie odliczanie i tu jest mój problem - jak zatrzymać pierwsze odliczanie? Proszę o sugestwie z Waszej strony. Z góry dzięki. poniżej mój kod: `

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);



    Button finnish = (Button) findViewById(R.id.buttonFinnished);
    finnish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {



            final TextView timer1 = (TextView) findViewById(R.id.textViewFinalCOunter);
            new CountDownTimer(10000, 1000) {

                @Override
                public void onTick(long millisUntilFinished) {
                    timer1.setText(String.valueOf(finalCounter));
                    finalCounter--;


                }

                @Override
                public void onFinish() {
                    timer1.setText("koniec rundy");
                }
            }.start();
        }
    });
    TextView letter = (TextView) findViewById(R.id.textViewLetter);
    final String[] letters = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "ł", "m", "n", "o", "p", "r", "s", "t", "u", "w", "z"};
    int random = (int) (Math.random() * 23);
    letter.setText(letters[random]);

    final TextView timer = (TextView) findViewById(R.id.textViewTimer);



        new CountDownTimer(120000, 1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                if (timer1 != null) {
                    timer.setText(String.valueOf(counterStop));
                } else {

                    timer.setText(String.valueOf(counter));
                    counter--;
                }
            }

            @Override
            public void onFinish() {
                timer.setText("koniec rundy");
            }
        }.start();

    }
}`
0

Nie mam teraz dostępu żeby to sprawdzić, ale z tego co pamiętam to powinno być CountDownTimer counter = new CountDownTimer(...) itd. a potem counter.cancel();

A no i będziesz musiał zdefiniować go poza listenerem

0

Żeby rozjaśnić sytuacje napisze tak, ze po odpaleniu activity pierwszy counter działa, czyli odlicza od 120 do 0 i po odliczeniu wyświetla komunikat "koniec rundy". Jeżeli wcisnę button to drugi licznik tez się włącza i działa poprawnie, z tym że chciałem, aby wtedy pierwszy licznik, który startuje razem z activity się zatrzymał. Tak myślałem że musi być zdefiniowany gdzieś indziej ale nie wiem gdzie i jak to zrobić. To moja pierwsza aplikacja która staram się napisać, więc będę bardzo wdzięczny za pokazanie jak zrobić coś takiego jak opisałem powżej.

1

Coś w tym stylu

public class MainActivity extends AppCompatActivity {

    CountDownTimer timer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView firstCounter = (TextView) findViewById(R.id.firstTextView);
        final TextView secondCounter = (TextView) findViewById(R.id.secondTextView);

        timer = new CountDownTimer(120000, 1000) {
            @Override
            public void onTick(long l) {
                firstCounter.setText(String.valueOf(l / 1000));
            }

            @Override
            public void onFinish() {
                firstCounter.setText("Koniec");
            }
        }.start();

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                timer.cancel();

                new CountDownTimer(120000, 1000) {
                    @Override
                    public void onTick(long l) {
                        secondCounter.setText(String.valueOf(l / 1000));
                    }

                    @Override
                    public void onFinish() {
                        secondCounter.setText("Koniec");
                    }
                }.start();
            }
        });
    }
}
0

Super, wielkie dzięki za podpowiedz ;) Mam jeszcze pytanie z innej beczki. Chciałem napisac grę na androida, mianowicie "Państwa-miasta" zakładam że znana każdemu. Teraz moje pytanie, czego powinienem użyc amy była to gra real time multiplayer? Słyszałem o czymś takim jak firebase. Czy powinienem o tym poczytać, czy może o czyms zupełnie innym? Jeszcze pytanie odnośnie pracy, czy jeżeli udało by mi się napisać taka aplikacje to miałbym już wystarczające umiejętności żeby startować na junior android developera? z góry dzięki za odpowiedzi na moje pytania ;)

0

Z tym Ci już nie pomogę, będzie musiał odpowiedzieć ktoś bardziej doświadczony

0

ok wielkie dzięki za pomoc ;)

0
Michał G napisał(a):

Chciałem napisac grę na androida, mianowicie "Państwa-miasta" zakładam że znana każdemu. Teraz moje pytanie, czego powinienem użyc amy była to gra real time multiplayer? Słyszałem o czymś takim jak firebase. Czy powinienem o tym poczytać, czy może o czyms zupełnie innym? z góry dzięki za odpowiedzi na moje pytania ;)

Firebase realtime database: https://firebase.google.com/docs/database/ - najłatwiejsze.

Michał G napisał(a):

Jeszcze pytanie odnośnie pracy, czy jeżeli udało by mi się napisać taka aplikacje to miałbym już wystarczające umiejętności żeby startować na junior android developera?

Tego nie wiem, zależy jak będzie napisana. Patrząc jednak na to, o co pytasz i na ile jesteś samodzielny w myśleniu, nie będzie to prędko albo nawet nigdy. Aby znaleźć odpowiedź na twoje pytanie, wystarczyło zajrzeć do dokumentacji (oczywiście, po angielsku).

1 użytkowników online, w tym zalogowanych: 0, gości: 1