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