Note that there are some explanatory texts on larger screens.

plurals
  1. POWeirdest android app crash
    primarykey
    data
    text
    <p>I've made a simple android quiz game for android 2.2 (sdk-8). Everything works perfectly on my emulator, but when I try using the app on my smart phone (android 2.2) it crashes on the 9th question.</p> <ul> <li><p>1-8 questions work perfectly on my smart phone (android 2.2)</p></li> <li><p>after 8th (on 9th) it crashes (smart phone)</p></li> <li><p>Everything works perfectly in my emulator, no crashes (Eclipse)</p></li> <li><p>I am %120 sure Im using .apk I exported from my android project in eclipse</p></li> </ul> <p>Any idea what's wrong?</p> <pre><code>public class ETBetaActivity extends Activity implements View.OnClickListener { Button answer_1, answer_2,answer_3, answer_4,main; TextView q_textview, tip; private String a1,a2,a3,a4 = ""; private int i1 = 0; public static int correct = 0; private boolean alive = true; MediaPlayer button_click; private String[] questions = {"Q1", "Q2", "Q3", "Q4", "Q5", //5 "Q6", "Q7", "Q8", "Q9", //CRASH!!!! WHAT THE FUDGE?! "Q10" //10 }; public static int question_amount = 10; private String[] answers_correct = {"Correct answer - 1", "Correct answer - 2", "Correct answer - 3", "Correct answer - 4", "Correct answer - 5", "Correct answer - 6", "Correct answer - 7", "Correct answer - 8", "Correct answer - 9", "Correct answer - 10" }; private String[][] answers_wrong = { {"Q1-1", "Q1-2" , "Q1-3"}, {"Q2-1", "Q2-2" , "Q2-3"}, {"Q3-1", "Q3-2" , "Q3-3"}, {"Q4-1", "Q4-2" , "Q4-3"}, {"Q5-1", "Q5-2" , "Q5-3"}, {"Q6-1", "Q6-2" , "Q6-3"}, {"Q7-1", "Q7-2" , "Q7-3"}, {"Q8-1", "Q8-2" , "Q8-3"}, {"Q9-1", "Q9-2" , "Q9-3"}, {"Q10-1", "Q10-2" , "Q10-3"} }; List&lt;String&gt; question_list = new ArrayList&lt;String&gt;(); List&lt;String&gt; answer_list_correct = new ArrayList&lt;String&gt;(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getData(); Game(i1); } @Override public void onClick(View view) { if (alive == false) { // startActivity(new Intent("com.aleksei.etb.END")); return; } button_click = MediaPlayer.create(this, R.raw.button_click); button_click.start(); switch(view.getId()){ case R.id.button5: //main break; case R.id.button1: //answer_1 if(isCorrect(1)) correct++; break; case R.id.button2: //answer_2 if(isCorrect(2)) correct++; break; case R.id.button3: //answer_3 if(isCorrect(3)) correct++; break; case R.id.button4: //answer_3 if(isCorrect(4)) correct++; break; default: break; } Game(i1); //correct++; tip.setText(""); } public static int getResults(){ int value = (int) Math.floor((correct*5)/question_amount); if(value &lt;= 0) return 1; else return value; } private boolean isCorrect(int button){ for (int i = 0; i &lt; answers_correct.length; i++){ if(button == 1 &amp;&amp; a1 == answers_correct[i] || button == 2 &amp;&amp; a2 == answers_correct[i] || button == 3 &amp;&amp; a3 == answers_correct[i] || button == 4 &amp;&amp; a4 == answers_correct[i]) return true; } return false; } private void Game(int q){ if(i1 == question_amount) { //no more questions startActivity(new Intent("com.aleksei.etb.END")); alive = false; return; } try { main.setText("Dunno"); /* String answer_list[][] = { {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]} }; */ String answer_list[] = { answers_correct[q], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2] }; Collections.shuffle(Arrays.asList(answer_list)); answer_1.setText(answer_list[0]); answer_2.setText(answer_list[1]); answer_3.setText(answer_list[2]); answer_4.setText(answer_list[3]); a1 = answer_list[0]; a2 = answer_list[1]; a3 = answer_list[2]; a4 = answer_list[3]; q_textview.setText(questions[q]); /*questions = question_list.toArray(new String[question_list.size()]); answers_correct = answer_list_correct.toArray(new String[answer_list_correct.size()]); question.setText(questions[i1]); answer_list_correct.remove(questions[i1]); question_list.remove(questions[i1]);*/ } catch (Exception ex){} i1++; } private void getData(){ //Getting the data main = (Button) findViewById(R.id.button5); answer_1 = (Button) findViewById(R.id.button1); answer_2 = (Button) findViewById(R.id.button2); answer_3 = (Button) findViewById(R.id.button3); answer_4 = (Button) findViewById(R.id.button4); q_textview = (TextView) findViewById(R.id.question); tip = (TextView) findViewById(R.id.answ1); //Making the buttons, actually work main.setOnClickListener(this); answer_1.setOnClickListener(this); answer_2.setOnClickListener(this); answer_3.setOnClickListener(this); answer_4.setOnClickListener(this); //Resets the text //Note to self: Replace with another ContectView main.setText("Begin!"); answer_4.setText(""); answer_3.setText(""); answer_2.setText(""); answer_1.setText(""); tip.setText(""); /* for(String x : questions) { for(String y : answers_correct){ answer_list_correct.add(y); question_list.add(x); Collections.shuffle(answer_list_correct); Collections.shuffle(question_list); } } */ } } </code></pre> <p>End intent/class</p> <pre><code>public class End extends Activity implements RatingBar.OnRatingBarChangeListener { // ETBetaActivity classy = new ETBetaActivity(); TextView score; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.end); score = (TextView) findViewById(R.id.score); results(); final RatingBar yourRating = (RatingBar) findViewById(R.id.ratingBar1); yourRating.setRating(ETBetaActivity.getResults()); Toast.makeText(End.this, "Score "+ETBetaActivity.getResults(), Toast.LENGTH_LONG).show(); yourRating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){ @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { // yourRating.setRating(rating); yourRating.setRating(ETBetaActivity.getResults()); Toast.makeText(End.this, "Score "+ETBetaActivity.getResults(), Toast.LENGTH_LONG).show(); }}); //movieImage.setImageResource(R.drawable.icon); } @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { // TODO Auto-generated method stub } public void results(){ score.setText("Your score "+ETBetaActivity.getResults()); } } </code></pre> <p>PS. It's not 'END' class causing the error, cause I've tried</p> <pre><code>if(i1 == 4) </code></pre> <p>To call it earlier, and it worked perfectly.</p> <p>Best regards.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload