Metoda się nie wywołuje

0

Witam, tworzę aplikację mobilną i podczas próby wywołania metody, czyli kiedy nacisnę przycisk odpowiadający za jej wywołanie wtedy aplikacja wyłącza się. Chodzi o to żeby metoda włączyła następną losową aktywność. Gdy robię bez metody to działa, tylko kod się rozrasta. Dlaczego to nie działa ? Z góry dzięki za pomoc.

public class EkranGlowny extends AppCompatActivity {

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

        b1=(Button)findViewById(R.id.button);
        final View.OnClickListener nastepnaaktywnosc = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Losowanie metoda = new Losowanie();
                metoda.Nastepnaklasa();
            }
        };
        b1.setOnClickListener(nastepnaaktywnosc);
    }
}



public class Losowanie extends Activity {

    public void Nastepnaklasa() {

        Context context;
            Random losowanie = new Random();
            losowanie.nextInt(3);
            int[] los = new int[1];
            los[1] = losowanie.nextInt(3);
            if (los[1] == 0) {
                context = getApplicationContext();
                Intent intent = new Intent(context, Level1.class);
                startActivity(intent);
            };
            if (los[1] == 1 ) {
                context = getApplicationContext();
                Intent intent = new Intent(context, Level2.class);
                startActivity(intent);
            };
}
}



public class Level1 extends AppCompatActivity {

    Button b1,b2,b3;
    int los;
    Context context;

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

        b1=(Button)findViewById(R.id.button2);
        b2=(Button)findViewById(R.id.button3);
        b3=(Button)findViewById(R.id.button4);

        final MediaPlayer mp = MediaPlayer.create(this, R.raw.piosenkapierwsza);
        mp.start();

        View.OnClickListener pierwszy = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.pause();
                Losowanie metoda = new Losowanie();
                metoda.Nastepnaklasa();
            }
        };
        b1.setOnClickListener(pierwszy);

    }
}
 
1
 int[] los = new int[1];
 los[1] = losowanie.nextInt(3);

Ten kod sie wywali zawsze i jeśli twierdzisz że kiedykolwiek działa to kłamiesz.
Tablice indeksujemy od 0.

0

A nie możesz po prostu uruchomić programu w trybie debugowania i zobaczyć w którym momencie przestaje działać? To całkiem pomocne.

0
 Losowanie metoda = new Losowanie();
 metoda.Nastepnaklasa();

Ręczne tworzenie aktywności? Radzę wrócić do podstaw Androida.. Obiekty takich klas jak Activity są zarządzane przez system i nie powinno się ich tworzyć samemu.

0
public class Losowanie extends Activity {
 
    public void Nastepnaklasa() {
 
        Context context;
            Random losowanie = new Random();
            losowanie.nextInt(3);
            int[] los = new int[1];
            los[1] = losowanie.nextInt(3);
            if (los[1] == 0) {
                context = getApplicationContext();
                Intent intent = new Intent(context, Level1.class);
                startActivity(intent);
            };
            if (los[1] == 1 ) {
                context = getApplicationContext();
                Intent intent = new Intent(context, Level2.class);
                startActivity(intent);
            };
}
}

wtf miesiąca. Co wyczynia ten kod to chyba jeden Allah wie. Wracaj do podstaw komunikacji pomiędzy Activity bo to jest jakiś koszmar.

żeby nie robić tylko hejtu polecam tą stronę.

http://developer.android.com/training/basics/firstapp/starting-activity.html

a wątek do kosza co by nie straszyć innych potencjalnych programistów

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