2015-07-07 3 views
1

Какова цель блока if в методе onCreate()? Почему необходимо проверить, является ли savedInstanceState нулевым?Зачем нужно проверять savedInstanceState внутри OnCreate?

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()) 
       .commit(); 
    } 
} 
+0

Извинения. Я новичок здесь:/ –

+0

@ njzk2 в зависимости от того, как новый человек, они могут не знать, где найти документацию. В этом случае, Abhijit, вы можете использовать [эту ссылку] (http://developer.android.com/reference/android/app/Activity.html#onCreate (android.os.Bundle)) для получения дополнительной информации. Чтобы процитировать документы, касающиеся параметра: «Если операция повторно инициализируется после того, как она была закрыта, этот пакет содержит данные, которые он недавно предоставил в onSaveInstanceState (Bundle). Примечание: В противном случае это значение равно null». – AdamMc331

+0

Спасибо @ McAdam331 –

ответ

3

Когда ваша деятельность заново, например, после поворота экрана или другие configuration change, фрагменты автоматически вернули обратно. Проверяя, что savedInstanceState == null, вы гарантируете, что вы не повторно добавляете фрагмент, который уже был добавлен для вас.

+0

Итак, каждый раз, когда я заново запускаю приложение, savedInstanceState должен быть нулевым. Только тогда будет добавлен новый фрагмент, верно? –

+0

Правильно, это «null» только в первый раз, когда создается действие. – ianhanniballake

0

Хорошо, что вы можете вспомнить, где кто-то был, когда они в последний раз оставили ваше приложение. Так, например, хром помнит ваши последние посещенные вкладки.