Zabijanie activity

0

Witam mam pewien problem.
Pisze aplikacje na android i chodzi mi o to że by instrukcja Try wyłapała błąd w metodzie przypisz_kursy() jeśli taki wystąpi wyświetliła komunikat "Problem z aktualizacją" i zabiła activity lecz program wyłapuje wyjątek wyświetla komunikat "Problem z aktualizacją" później jeszcze ten :"Zaktualizowano" (którego nie powinien) i dopiero aktywność zostaje zabita.


            try 
            {
                przypisz_kursy();
            } 
            catch (Exception e) 
            {
                Toast.makeText(getApplicationContext(),"Problem z aktualizacją", Toast.LENGTH_SHORT).show();
                super.onDestroy();
            }   
            Toast.makeText(getApplicationContext(),"Zaktualizowano", Toast.LENGTH_SHORT).show();
            super.onDestroy();  
0

Wchodzi do catch, wykonuje to co tam jest a potem wychodzi i robi to co jest dalej w programie więc wypisuje "Zaktualizowano" bo program nie kończy się po złapaniu wyjątku.

0

Wydawało mi się że metoda super.onDestroy() powinna zabić od razu aktywność.

0

Nie wiem jak ta metoda działa. Natomiast wydaje mi się, że po wyjściu z catch program będzie działał dalej. Ewentualnie zastąp to if... then... else chociaż nie wiem czy to najlepsze wyjście.

0

onDestroy jak i inne callbacki (onResume itp.) nie sa od tego zebys ty je wolal, je wola system. Wymuszenie zakonczenia Activity robisz np. za pomoca finish().

0

Próbowałem też z finish() i to samo

0

Nie wywołauj onDestroy() tylko finish() jak wspomniano wyżej, oraz dodaj return'a po finish().

0

Tylko ja to wykonuje w OnCreate() a a ona jest typu void.
Kod całej metody:

 @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.aktual);
            zapisane_ustawienia=getSharedPreferences("MyPreferences",Activity.MODE_PRIVATE);
            new Thread(new Runnable() 
            {
                public void run() 
                {
                    try 
                    {
                        pobierz();
                    } 
                    catch (Exception e) 
                    {
                    }                          
                 }
              }).start();
            try 
            {
                przypisz_kursy();
            } 
            catch (Exception e) 
            {
                        Toast.makeText(getApplicationContext(),"Problem z aktualizacją", Toast.LENGTH_SHORT).show();
                finish();
            //  return();
            }   

                Toast.makeText(getApplicationContext(),"Zaktualizowano", Toast.LENGTH_SHORT).show();
            finish();        
        }    
0

Nie patrzylem na kod, ale sam fakt ze robisz to w onCreate smierdzi. Czyli jak - ktos uruchamia aplikacje / activity, onCreate costam robi i jesli sie nie powiedzie, jest konczone? Pomijam, ze nie jestem pewien co na to Android jesli w onCreate wywolasz onDestroy / finish czy inne - uzytkownik nie dostaje zadnego komunikatu ani nic, i aplikacja / activity sie konczy? Srednie usability - lepiej jak jest blad to chociaz pokaz ze sie cos nie powiodlo i moze rowniez dlaczego?

0

@dawid918 To, że jest void nie znaczy ze nie może być return ;) Próbowałeś dodać? Jeśli takie rozwiązanie Ci się nie podoba zawsze możesz jakąś flagę ustawić.

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