StartActivity - z innej klasy

0

Witam serdecznie!
Tworzę obiekt klasy, w której mam metodę do tworzenia AlertDialogu. Chciałbym aby po kliknięciu w item interfejsu dialogu, otworzyło się nowe Activity, a zamknęło aktualne, jednak coś robię źle.
Constructor wygląda tak:

public InfoWindow(Activity activity, Context context, int which) {
		this.activity = activity;
		this.context = context;
		this.which = which;
	}

Tworzenie dialogu i otwieranie Activity:

public void showWindow(CharSequence[] items){
	final CharSequence[] listOptions = items;
	AlertDialog.Builder builder = new AlertDialog.Builder(activity);
	builder.setTitle("Uzasadnij pauze");
	builder.setItems(listOptions, new DialogInterface.OnClickListener() {
	            @Override
	            public void onClick(DialogInterface dialog, int item) {
	                if (listOptions[item].equals("Brak materiałów")) {
	                	toastMsg.showCustomAlert(context, activity, "Idź po materiały i ponownie włącz play.");
	                } else if (listOptions[item].equals("Inne")) {
	                	activity.finish();
	                	Intent startActivity = new Intent(context, FailureActivity.class);// próbowałem też Intent startActivity = new Intent(activity, FailureActivity.class);
	    		        context.startActivity(startActivity);
	                } else if(listOptions[item].equals("Zamknij okno")){
	                	dialog.dismiss();
	                }
	            }
	        });
}

Wywala się na finish(), ale gdy jest zakomentowany wywala się w następnej linii. Metoda, którą tworzę toast czyli showCustomAlert, do którego przekazuję context i activity, działa poprawnie. Co wskazuję na to, że context i activity są poprawnie wypełnione danymi.

Dlatego Moje pytanie brzmi jak poprawnie powinno to wyglądać?

1

Co znaczy 'sie wywala'? Pokaz wyjatek.
Nie musisz przekazywac Activity i Context - Activity jest Contextem, wzglednie mozesz wolac Activity.getApplicationContext.

0

Aha, ten finish() na poczatku jest na pewno zly, daj go po startActivity.

0

finish() może być przed startActivity. Jesli nie dasz dialog.dismiss() przed wyjściem z activity będziesz dostawał Window Leaked exception.
W onPause dodaj:

if(dialog != null){
    dialog.dismiss()
}
0

Dzięki za pomoc i zainteresowanie!
Z contextem cenna uwaga dzięki.
Co do finish(), to zgadza się może być przed startactivity, już to testowałem.
@usunięty użytkownik
Dzięki, jednak to nic nie dało :)

Znalazłem rozwiązanie, ehh trzeba podać jakie activity zamykamy i z activity odpalać metodę startactivity.

Intent startActivity = new Intent(activity, FailureActivity.class);
activity.startActivity(startActivity);

Pozdro

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