Ich bin die OnSaveInstanceState-Implementierung meiner App. Ich habe meinen onSaveInstanceState erfolgreich implementiert, aber er behält die aktuelle Frage bei der Änderung der Ausrichtung nicht bei. Das Folgende ist meine MainActivity. Ich habe das Buch BigNerdRanchGuide von Seite zu Seite verfolgt. Ich verstehe nicht, warum es nicht funktioniert.OnSaveInstanceState speichert die Instanz nicht
Danke.
public class MainActivity extends AppCompatActivity {
public static final String TAG = "QuizActivity";
public static final String KEY_INDEX = "index";
private TextView mTextView;
private Button mTrueButton, mFalseButton;
private ImageButton mNext, mPrev;
private Question[] mQuestionBank = new Question[]{
new Question((R.string.pacific_ocean), true),
new Question((R.string.syria_europe), false),
new Question((R.string.canada_na), true),
new Question((R.string.africa_country), false),
new Question((R.string.china_continent), false)
};
private int mCurrentIndex = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "OnCreate(Bundle) called");
if(savedInstanceState != null){
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0);
}
mTextView = (TextView)findViewById(R.id.question);
int question = mQuestionBank[mCurrentIndex].getTextResId();
mTextView.setText(question);
...
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState");
outState.putInt(KEY_INDEX, mCurrentIndex);
}
private void updateQuestion() {
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
int question = mQuestionBank[mCurrentIndex].getTextResId();
mTextView.setText(question);
}
private void lastQuestion(){
if (mCurrentIndex > 0){
mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
int question = mQuestionBank[mCurrentIndex].getTextResId();
mTextView.setText(question);
}else{
Toast.makeText(this, "You're at the last question", Toast.LENGTH_SHORT).show();
return;
}
}
private void checkAnswer(boolean userPressedTrue){
boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();
int messageResId = 0;
if(userPressedTrue == answerIsTrue){
messageResId = R.string.correct;
}else{
messageResId = R.string.incorrect;
}
Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
}
}
Wenn ich Ihren Code gut lese, was passiert ist, dass Sie die nächste Frage statt der aktuellen Frage sehen, wenn sich die Ausrichtung ändert, oder? –
Können Sie versuchen, ein [mcve] zu machen? Müssen wir 5 Schaltflächen und alle Lebenszyklusmethoden sehen, um Ihren Fehler zu finden? –
@ cricket_007 Ich habe es bearbeitet. Entschuldigen Sie. –