Skocz do zawartości
wAJT43

Zamknięcie activity po czasie

    Rekomendowane odpowiedzi

    wAJT43

    Witam, mam 3 activity w Android Studio. Główne, Kalkulator, Logo. Chciałbym aby najpierw wyswietlało się logo a potem głowne activity. Mam to zrobione jednak nie wiem jak po czasie (np. 5s) włączyć główne activity. Logo się wyświetla  lecz po 5 sekundach nie znika. Wgl nie wiem dlaczego nie moge napisać w finally

    Intent menu = new Intent(logo.this, glowne.class); a jedynie działa   Intent menu = new Intent(glowne.this, logo.class) Wyświetla się wtedy: Error:(42, 68) error: <identifier> expected

     

     

    package com.example.komputer.aplikacja1337;
    
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    
    public class glowne extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_glowne);
    
            ActionBar bar = getSupportActionBar();
            bar.hide();
    
            Intent intent = new Intent(glowne.this, logo.class);
            startActivity(intent);
    
    
    
            Thread timer = new Thread()
            {
                public  void  run()
                {
                    try
                    {
                        sleep(5000);
                    }
    
                    catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
    
                    finally {
    
                            Intent menu = new Intent(glowne.this, logo.class);
                                startActivity(menu);
                    }
                }
            };
    
        }
    
    
    
    
        public void kalkulator(View view)
        {
            Intent intent = new Intent(glowne.this, kalkulator.class);
            startActivity(intent);
        }
    
    
    }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
    	public void run() {
    		finish();
    	}
    }, 5000);

    To tylko jedno z miliona rozwiązań. Możesz to zrobić przez Future, za pomocą Rx.

     

    Jesli jednak użyjesz rozwiązania z mojego posta, pamiętaj, że ono będzie powodowało memory leak i przy on destroy należy anulować ten handler.

    • Lubię to! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    wAJT43

    Dzięki za odpowiedź jednak nie pomogłeś mi :) Jak widzisz  nie znam się na Androidzie, kodze 3 dzień. Mógłbyś coś wytłumaczyć? Podać jakiś prostszy kod? Albo jak zamknąć activity po czasie?

    Edytowane przez wAJT43

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Nie ma prostszego kodu. Co Ci nie działa w rozwiązaniu, które podałem?

    • Lubię to! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    wAJT43

    Hmmm Teraz po 5 sekundach logo włącza się jeszcze raz i z muzyką nakładają się na siebie.

    Intent wroc = new Intent(glowne.this, logo.class);
    startActivity(wroc);

    Wiesz dlaczego nie moge napisać :

    Intent wroc = new Intent(logo.this, glowne.class);

    error: Error:(29, 43) error: not an enclosing class: logo

    Może tu jest problem, że nie mogę wrócić do głównego activity.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Dnia 6/18/2017 o 13:39, Coderoid napisał:
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
    	public void run() {
    		finish();
    	}
    }, 5000);

    To tylko jedno z miliona rozwiązań. Możesz to zrobić przez Future, za pomocą Rx.

     

    Jesli jednak użyjesz rozwiązania z mojego posta, pamiętaj, że ono będzie powodowało memory leak i przy on destroy należy anulować ten handler.

    nie chce sie czepiac, ale polecanie mu rx to wybieganie o jakies miliard poziomow umiejetnosci do przodu ;)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Jak Ci handler nie odpowiada możesz skorzystać z AsyncTask. W metodzie doInBackground czekasz 5sekund, a w onPostExecute ukrywasz logo ktore wczesniej wyswietliles. Nie musisz wykonywać intentów.

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    pavloasto

    Patrząc w Twój kod, łapię się za głowę.

     

    Po pierwsze i najważniejsze: nazwy klas piszemy wielkimi literami.

    Po drugie: nazwy zmiennych, klas itp po angielsku.

    Po trzecie: skoro chcesz odpalic najpierw klasę logo a później głowne to czemu najpierw odpalasz głowne a w niej odpalasz logo, i po 5 sekundach znów odpalasz logo?

     

    Poczytaj trochę o aktywnościach w Androidzie, bez podstaw tego nie ogarniesz.

    • Lubię to! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    wAJT43
    13 godzin temu, pavloasto napisał:

    Po trzecie: skoro chcesz odpalic najpierw klasę logo a później głowne to czemu najpierw odpalasz głowne a w niej odpalasz logo, i po 5 sekundach znów odpalasz logo?

    Faktycznie, zmieniłem to teraz. Zrobiłem tak bo inny pisali że lepiej aby od "głownego" activity wszystko wychodziło i wchodziło.

    Poszukałem chwilę i znalazłem coś takiego:

    Timer timer = new Timer();
    timer.schedule(new TimerTask()
    {
        @Override
        public void run()
     {
            Intent intent = new Intent(LOGO.this, MENU.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        }
    }, 5000);

    Wszystko działa :). Do końca nie rozumiem tego kodu ale mam nadzieję że ogarnę

     

     

    Edytowane przez wAJT43

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x