Я много чего перепробовал, но не могу понять. Я пытаюсь получить случайный список вопросов (в моем конкретном случае речь идет о песнях, которые пользователь будет слушать и должен будет найти ответ). Я подключил проект к базе данных Firebase, где он читает URL песни, а также возможные 4 ответа.
У меня проблемы с попыткой воспроизвести вопросы по какой-то причине в случайном порядке, хотя это не должно быть так сложно.
У меня также есть проблема, так как при изменении песни предыдущая песня по-прежнему воспроизводится вместе с Следующая песня.
public class Mixed extends AppCompatActivity {
private TextView mScoreView;
private static final long START_TIME_IN_MILLIS = 60000;
private TextView mQuestion;
private CountDownTimer mCountDownTimer;
private long mTimeLeftInMillis = START_TIME_IN_MILLIS;
private Button mButtonChoice1, mButtonChoice2, mButtonChoice3, mButtonChoice4;
private int mScore;
private String mAnswer;
private int mQuestionNumber = 0;
private int counter = 1;
private Firebase mQuestionRef, mChoice1Ref, mChoice2Ref, mChoice3Ref, mChoice4Ref, mAnswerRef;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mixed);
mScoreView = (TextView) findViewById(R.id.score);
mQuestion = (TextView) findViewById(R.id.question);
mButtonChoice1 = (Button) findViewById(R.id.choice1);
mButtonChoice2 = (Button) findViewById(R.id.choice2);
mButtonChoice3 = (Button) findViewById(R.id.choice3);
mButtonChoice4 = (Button) findViewById(R.id.choice4);
updateQuestion();
startTimer();
// Button 1 trigger action
mButtonChoice1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
counter++;
if (mButtonChoice1.getText().equals(mAnswer)) {
mScore = mScore + 1;
updateScore(mScore);
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
} else {
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
}
}
});
// Button 2 trigger action
mButtonChoice2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
counter++;
if (mButtonChoice2.getText().equals(mAnswer)) {
mScore = mScore + 1;
updateScore(mScore);
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
} else {
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
}
}
});
// Button 3 trigger action
mButtonChoice3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
counter++;
if (mButtonChoice3.getText().equals(mAnswer)) {
mScore = mScore + 1;
updateScore(mScore);
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
} else {
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
}
}
});
// Button 4 trigger action
mButtonChoice4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
counter++;
if (mButtonChoice4.getText().equals(mAnswer)) {
mScore = mScore + 1;
updateScore(mScore);
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
} else {
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
if (counter == 5) {
startActivity(launchReceivingIntent);
}else {
updateQuestion();}
}
}
});
}
private void startTimer() {
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 100) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
startActivity(launchReceivingIntent);
}
}.start();
}
private void updateCountDownText(){
int minutes = (int) (mTimeLeftInMillis / 100) / 60;
int seconds = (int) (mTimeLeftInMillis / 100) % 60;
String timeLeftFormatted = String.format(Locale.getDefault(),"%02d:%02d", minutes, seconds);
mQuestion.setText(timeLeftFormatted);
}
private void updateScore(int score) {
mScoreView.setText("" + mScore);
}
private void updateQuestion() {
mQuestionRef = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/url");
//Read the question from database
mQuestionRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.getValue(String.class);
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(question);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
//Read the choice 1 from database
mChoice1Ref = new Firebase("https://.......firebaseio.com/" + mQuestionNumber + "/choice1");
mChoice1Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonChoice1.setText(choice);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
//Read the choice 2 from database
mChoice2Ref = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/choice2");
mChoice2Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonChoice2.setText(choice);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
//Read the choice 3 from database
mChoice3Ref = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/choice3");
mChoice3Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonChoice3.setText(choice);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
//Read the choice 4 from database
mChoice4Ref = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/choice4");
mChoice4Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonChoice4.setText(choice);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mAnswerRef = new Firebase("https://https://.......firebaseio.com/ + mQuestionNumber + "/answer");
mAnswerRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mAnswer = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mQuestionNumber++;
}
}
любые предложения будут по достоинству оценены, так как мой разум действительно застрял.
Заранее спасибо!