2014-02-10 51 views
0

請糾正我,如果我錯了,但我已經做了所有的下面,我仍然得到一個錯誤,如果我運行test2.java,我得到的onCreate計數是在jUnit測試關閉錯誤。onCreate count已關閉,但代碼看起來不錯

請condider以下:

public class ActivityOne extends Activity { 

    private static final String RESTART_KEY = "restart"; 
    private static final String RESUME_KEY = "resume"; 
    private static final String START_KEY = "start"; 
    private static final String CREATE_KEY = "create"; 

    // String for LogCat documentation 
    private final static String TAG = "Lab-ActivityOne"; 

    // Lifecycle counters 

    // TODO: 
    // Create counter variables for onCreate(), onRestart(), onStart() and 
    // onResume(), called mCreate, etc. 
    // You will need to increment these variables' values when their 
    // corresponding lifecycle methods get called 

private int mCreate = 0; 
private int mRestart = 0; 
private int mResume = 0; 
private int mStart = 0; 
    // TODO: Create variables for each of the TextViews, called 
     // mTvCreate, etc. 

private TextView mTvCreate; 
private TextView mTvRestart; 
private TextView mTvResume; 
private TextView mTvStart; 

    Bundle instancestate; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_one); 

     instancestate = savedInstanceState; 
     // TODO: Assign the appropriate TextViews to the TextView variables 
     // Hint: Access the TextView by calling Activity's findViewById() 
     // textView1 = (TextView) findViewById(R.id.textView1); 

     mTvCreate = (TextView) findViewById(R.id.create); 
     mTvRestart = (TextView) findViewById(R.id.restart); 
     mTvResume = (TextView) findViewById(R.id.resume); 
     mTvStart = (TextView) findViewById(R.id.start); 

     Button launchActivityTwoButton = (Button) findViewById(R.id.bLaunchActivityTwo); 
     launchActivityTwoButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO: 
       // Launch Activity Two 
       // Hint: use Context's startActivity() method 

       // Create an intent stating which Activity you would like to start 
        Intent activityTwo = new Intent(ActivityOne.this,ActivityTwo.class); 
        startActivity(activityTwo); 
       // Launch the Activity using the intent 
      } 
     }); 

     // Check for previously saved state 
     if (savedInstanceState != null) { 
      // TODO: 
      // Restore value of counters from saved state 
       mCreate = savedInstanceState.getInt(CREATE_KEY); 
       mRestart = savedInstanceState.getInt(RESTART_KEY); 
       mStart = savedInstanceState.getInt(START_KEY); 
       mResume = savedInstanceState.getInt(RESUME_KEY); 
      // Only need 4 lines of code, one for every count variable 
     } 

     // TODO: Emit LogCat message 
     Log.i(TAG, "Entered onCreate() method" +mCreate); 
     // TODO: 
     // Update the appropriate count variable 
     ++mCreate; 
     // Update the user interface via the displayCounts() method 
     displayCounts(); 
    } 

    // Lifecycle callback overrides 

    @Override 
    public void onStart() { 
     super.onStart(); 
     // TODO: Emit LogCat message 
     Log.i(TAG, "Entered onStart() method" +mStart); 
     // TODO: 
     // Update the appropriate count variable 
    ++mStart; 
     // Update the user interface 
     displayCounts(); 

    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     // TODO: Emit LogCat message 
     Log.i(RESUME_KEY, "Entered onResume() method" +mResume); 
     // TODO: 
     // Update the appropriate count variable 
     ++mResume; 
     // Update the user interface 
     displayCounts(); 

    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     //onSaveInstanceState(instancestate); 
     // TODO: Emit LogCat message 
     Log.i(TAG, "Entered onPause() method" +mStart); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     // TODO: Emit LogCat message 
     Log.i(TAG, "Entered onStop() method" +mStart); 
    } 

    @Override 
    public void onRestart() { 
     super.onRestart(); 

     // TODO: Emit LogCat message 
     Log.i(TAG, "Entered onRestart() method" +mResume); 
     // TODO: 
     // Update the appropriate count variable 
     ++mRestart; 
     // Update the user interface 
     displayCounts(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     // TODO: Emit LogCat message 
     Log.i(TAG, "Entered onDestroy() method"); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     // TODO: 
     // Save state information with a collection of key-value pairs 
     // 4 lines of code, one for every count variable 
      savedInstanceState.putInt(CREATE_KEY, mCreate); 
      savedInstanceState.putInt(RESTART_KEY, mRestart); 
      savedInstanceState.putInt(START_KEY, mStart); 
      savedInstanceState.putInt(RESUME_KEY, mResume); 

      super.onSaveInstanceState(savedInstanceState); 
    } 

    // Updates the displayed counters 
    public void displayCounts() { 
     mTvCreate.setText("onCreate() calls: " + mCreate); 
     mTvStart.setText("onStart() calls: " + mStart); 
     mTvResume.setText("onResume() calls: " + mResume); 
     mTvRestart.setText("onRestart() calls: " + mRestart); 

    } 
} 

這是堆棧跟蹤:

junit.framework.AssertionFailedError: onCreate() count was off. 
at course.labs.activitylab.test.Test2.testRun(Test2.java:55) 

...

回答

0

的onSaveInstanceState你的方法應該是這樣的:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 

    savedInstanceState.putInt(CREATE_KEY, mCreate); 
    savedInstanceState.putInt(RESTART_KEY, mRestart); 
    savedInstanceState.putInt(START_KEY, mStart); 
    savedInstanceState.putInt(RESUME_KEY, mResume);  
} 
0

打電話給super.onRestoreInstanceState(savedInstanceState);或者您可以將它放在

if (savedInstanceState != null) { 

      super.onRestoreInstanceState(savedInstanceState); 
      mCreate = savedInstanceState.getInt(CREATE_KEY); 
      mResume = savedInstanceState.getInt(RESUME_KEY); 
      mRestart = savedInstanceState.getInt(RESTART_KEY); 
      mStart = savedInstanceState.getInt(START_KEY); 
     } 
相關問題