나는 안드로이드 2.2 (sdk - 8)에 대한 간단한 안드로이드 퀴즈 게임을 만들었습니다. 모든 것이 내 에뮬레이터에서 완벽하게 작동하지만 스마트 폰 (Android 2.2)에서 앱을 사용해 볼 때 9 번째 질문에서 충돌이 발생합니다.이상한 안드로이드 애플 리케이션 크래시
1-8 질문, 그것은 (스마트 폰)
모든 것이 내 에뮬레이터에서 완벽하게 작동 충돌 (9 일) 8 일 후 내 스마트 폰 (안드로이드 2.2)
에 완벽하게 작동 어떤 충돌 (이클립스)
나는 120 % 확실 임 내가 이클립스 내 안드로이드 프로젝트에서 내 보낸 된 .apk 사용하고하지
무엇이 잘못 되었습니까?
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<String> question_list = new ArrayList<String>();
List<String> answer_list_correct = new ArrayList<String>();
@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 <= 0)
return 1;
else
return value;
}
private boolean isCorrect(int button){
for (int i = 0; i < answers_correct.length; i++){
if(button == 1 && a1 == answers_correct[i]
|| button == 2 && a2 == answers_correct[i]
|| button == 3 && a3 == answers_correct[i]
|| button == 4 && 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);
}
} */
}
}
최종 목적/클래스
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());
}
}
PS. 내가 일찍 전화를 걸려면
if(i1 == 4)
을 시도했습니다, 그리고 그것을 완벽하게 작동 원인 그것은, 오류의 원인이 'END'클래스 아니다.
감사합니다.
로그 고양이 없이는 쓸모가 없습니다. 전화 기록을 게시하십시오. – davidcesarino
내가 어떻게합니까? com.aleksti.etc 프로세스가 중지되었다는 오류 메시지가 표시됩니다. – Alex
짧은 안내 : 1) USB를 통해 전화를 컴퓨터에 연결하십시오. 2) USB 디버깅이 활성화되어 있는지 확인하십시오. * (전화의 '설정 -> 응용 프로그램 -> 개발') * 3) Window에서 ->보기 표시 -> 기타 -> LogCat'. 모든 종류의 로그 메시지가 다른 색상으로 인쇄되는 작업 영역 창이 나타납니다. 4) 응용 프로그램이 충돌합니다. 5) 큰 빨간 부분을 찾습니다. * ([this] (http://fullroom.com/_blog/LogCatStep3 .png)) * 태그가 AndroidRuntime 인. 6) 게시물 여기에 7) 이익! –