2014-10-24 3 views
0

은 내가 setter 메소드와 다른 변수를 설정 한 다음 변수를 얻으려고 노력하고 있어요. 여기이 설정 메소드가 작동하지 않는 이유는 무엇입니까?

if(savedInstanceState != null) { 
    mCurrentIndex = savedInstanceState.getInt(KEY_INDEX); 
    mIsCheater = savedInstanceState.getBoolean(KEY_CHEAT); 
    mQuestionBank[mCurrentIndex].setHasCheated(mIsCheater); 
} 

내가 mIsCheater을 받고 또 다른 변수를 설정하는 데 사용하고 있습니다 : 여기

내가 얘기하고있는 코드입니다.

그러나 내 앱을 실행하면 getter 메소드가 false를 반환하고 mIsCheater가 true를 반환합니다.

다음
Log.i(TAG,"mIsCheater = " + mIsCheater); 
Log.i(TAG,"hasCheated = "+ mQuestionBank[mCurrentIndex].getHasCheated()); 

if(mQuestionBank[mCurrentIndex].getHasCheated()) { 
    messageResId = R.string.judgment_toast; 
} else { 
    if (userPressedTrue == answerIsTrue) { 
     messageResId = R.string.correct_toast; 
    } else { 
     messageResId = R.string.incorrect_toast; 
    } 
} 

로거 정보입니다 : 내가 명확하게 정확하게 세터/getter 메소드를 호출하기 때문에 나는이 이해가 안

11088-11088/geoquiz.android.tubbs.com.geoquiz I/QuizActivity﹕ **mIsCheater = true** 
11088-11088/geoquiz.android.tubbs.com.geoquiz I/QuizActivity﹕ **hasCheated = false** 

여기

는 코드입니다. 그들은 또한 현재의 지수와 같은 것입니다. 잠깐 작업을했지만, 나는 뭔가를 변경하고 지금은 작동하지 않습니다.

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    Log.i(TAG,"onSaveInstanceState()"); 
    savedInstanceState.putInt(KEY_INDEX,mCurrentIndex); 
    savedInstanceState.putBoolean(KEY_CHEAT,mIsCheater); 
} 
+0

onSaveInstanceState (번들 b)의 코드는 어떻게 생깁니 까? –

+0

당신은 당신이 올바르게 설정/점점 확실해? – zgc7009

+0

if 조건과 로그 옆에 인덱스를 인쇄하십시오. –

답변

0

난 내 자신의 문제를 해결 한 다음은

추가 코드입니다.

알아두면 onCreate 메서드에서 mCurrentIndex에 대한 할당을 수행하고 있습니다.

onCreate는 한 번만 호출되므로 savedInstanceState가 null이므로 내 setter 메서드가 호출되지 않습니다. 그 setter 메서드는 일단 장치를 회전시키고 onCreate를 호출하면 호출됩니다. 는 내가 다시 CheatActivity에서 탐색 할 때, onResume이 호출되고 난 단순히 내 setter 메소드를 배치했다.

내 업데이트 된 코드는 hasCheated 변수를 꺼내 단순히 코드 전체에서 getter 메서드를 호출했습니다.

도움 주셔서 감사합니다.

관련 문제