Мой код:Это правильный способ программно вызвать фрагмент?
public class MainActivity extends AppCompatActivity {
private FragmentA fragmentA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
fragmentA = FragmentA.newInstance();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_a_container, fragmentA, "FRAGMENT_A");
fragmentTransaction.commit();
}
else {
fragmentA = (FragmentA) getSupportFragmentManager().findFragmentByTag("FRAGMENT_A");
}
}
}
Я действительно не знаю, что я делаю, но это в настоящее время, что я делаю. Я определяю контейнер для Фрагмента, а затем я использую FragmentTransaction, чтобы заменить его фрагментом. Часть, с которой я запуталась, - это утверждение else.
Должен ли я структурировать это по-другому?
Я думал, что изменения в конфигурации уничтожены. Действия и фрагменты, поэтому зачем проверять фрагмент в каком-то менеджере поддержки? Означает ли это, что Фрагменты фактически не уничтожаются? В то же время они кажутся уничтоженными, потому что они, похоже, перезагружаются, если я не использую
onSaveInstanceState
или подход .
Edit: Что с этим делать:
public class MainActivity extends AppCompatActivity {
private FragmentA fragmentA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentA = FragmentA.newInstance();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_a_container, fragmentA, "FRAGMENT_A");
fragmentTransaction.commit();
}
}
Я все еще не понимаю. Является ли строка 'fragmentA = (FragmentA) getSupportFragmentManager(). FindFragmentByTag (" FRAGMENT_A ");' correct? Или я могу удалить это и всегда вызывать код, который находится в первом блоке кода? (код транзакции) – KaliMa
Вам нужно сохранить его, потому что именно так вы извлекаете фрагмент, который вы создали ранее. тег «FRAGMENT_A» - это то, что идентифицирует ваш фрагмент с менеджером. –
Но если я поворачиваю экран, и он разрушает Activity и Fragment, как фрагмент может «существовать» где-нибудь, где я могу связать его с моим членом «fragA'? – KaliMa