2016-03-25 14 views
0

görüntüleniyorsa çöker Ben rastgele bir sınav uygulaması oluşturmaya çalışıyorum, ama sonunda çözmek mümkün değildi belirli bir sorunla karşı karşıyayım 2 gün.Android için düğmeler uygulaması ile rastgele bir sınav oluşturma, ancak ilk sorular ilk

Tüm sorularım ve seçenekleri 2 farklı Dizge dizisinin içinde var. sınavın ilerleme belirleyen bir int denilen bayrak

int flag=0; 

String allQuestions[]={"A","B","C","D","E","F","G","H","I","J"}; 

String allOptions[]={/*/Primeras opciones /*/"A","I","O", 
        /*/Segundas opciones/*/"E","O","I", 
        /*/Terceras opciones/*/"A","I","U", 
         /*/Cuartas opciones/*/"O","E","U", 
         */Quintas opciones/*/"O","U","A", 
          /*/Sextas opciones/*/"I","U","E", 
          /*/Septimas opciones/*/"E","I","E" 
          /*/Octavas opciones/*/"A","I","U", 
          /*/Novenas opciones/*/"E","U","O", 
          /*/Decimas opciones/*/"A","O","U"}; 

Bu şimdiye rasgele sayı seçmek nasıl:

ArrayList<Integer> number = new ArrayList<Integer>(); 
    for (int i = 1; i <= 10; ++i) number.add(i); 
    Collections.shuffle(number); 

benim düğmeleri bağlantılı ve bilgi yarışması etkinliği oluşturulduktan sonra kendi metin değişikliği yapmak var .

question=(TextView)findViewById(R.id.QuizCharacter); 
    answerA=(Button)findViewById(R.id.answerA); 
    answerB=(Button)findViewById(R.id.answerB); 
    answerC=(Button)findViewById(R.id.answerC); 
    answerD=(Button)findViewById(R.id.answerD); 
    answerE=(Button)findViewById(R.id.answerE); 
    answerF=(Button)findViewById(R.id.answerF); 

    question.setText(number.get(flag));  // <------ having problems here? 
    answerA.setText(allOptions[0]); 
    answerB.setText(allOptions[1]); 
    answerC.setText(allOptions[2]); 
    answerD.setText(allOptions[3]); 
    answerE.setText(allOptions[4]); 
    answerF.setText(allOptions[5]); 

Şimdi rasgeleleştirici çalışır sorundur oluşturulan rasgele sayı, daha sonra uygulama çöker ilk soru A ise o.

question.setText için sorunlu satır olduğunu düşündüğüm şeyi değiştirmeyi denedim (allQuestions [number.get (0)]);

Ve rastgele bir şansa sahip olmak yerine, her seferinde çöküyor.

Neden oluyor ve nasıl düzeltebilirim?

DÜZENLEME:

onCreate yöntemi:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quiz1); 

    correct = 0; 
    flag=0; 


    ArrayList<Integer> number = new ArrayList<Integer>(); 
    for (int i = 0; i < 10; ++i) number.add(i); 
    Collections.shuffle(number); 


    String questionCounter = "Question number (flag+1): " + (flag + 1);//+ "\nnumber.get(flag)="+ number.get(flag); 

    TextView questionNumber; 
    questionNumber = (TextView) findViewById(R.id.questionNumber); 
    questionNumber.setText(questionCounter); 


    question.setText(allQuestions[number.get(0)]); 
    answerA=(Button)findViewById(R.id.answerA); 
    answerB=(Button)findViewById(R.id.answerB); 
    answerC=(Button)findViewById(R.id.answerC); 
    answerD=(Button)findViewById(R.id.answerD); 
    answerE=(Button)findViewById(R.id.answerE); 
    answerF=(Button)findViewById(R.id.answerF); 

    question.setText(allQuestions[number.get(flag)]); 
    answerA.setText(allOptions[0]); 
    answerB.setText(allOptions[1]); 
    answerC.setText(allOptions[2]); 
    answerD.setText(allOptions[3]); 
    answerE.setText(allOptions[4]); 
    answerF.setText(allOptions[5]); 
} 

Düzenleme 2: cevap için Shadab Ansari

teşekkürler. Değişken soruyu başlatmayı unuttum.

+0

Lütfen kazayı içeren logcat çıktısını gönderin. –

cevap

1

0th index numaralı telefondan number numaralı telefondan hiçbir şey kaydetmiyorsunuz.

for (int i = 0; i < 10; ++i) number.add(i); //Runs from 0 to 9 

Ayrıca günlükleri göre "question" boş olabilir - için

for (int i = 1; i <= 10; ++i) number.add(i); //Runs from 1 to 10 

Kişisel döngü değişmelidir. Bu yüzden lütfen kullanmadan önce tüm görünümleri başlatın.

+0

Soruyu yanlış anladım, bu cevap doğru. – khusrav

+0

Merhaba, cevabınız için teşekkürler, ne yazık ki bu benim problemimi çözmedi, çünkü (int i = 0; i <10; ++ i) number.add (i); veya 'veya (int i = 0; i <9; ++ i) number.add (i); , kilitlenmeyi durduruyor. Başka bir fikrin var mı? – Cascascap

+0

Cevabımda (int i = 0; i <10; ++ i) değil (int i = 0; i <9; ++ i). Kodumu denedikten sonra logcat çıktısı alın. –

İlgili konular