У меня есть фрагмент (F1) с публичным методом, как это
public void asd() {
if (getActivity() == null) {
Log.d("yes","it is null");
}
}
и да, когда я это называю (из Activity), это ноль ...
FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
F1 f1 = new F1();
transaction1.replace(R.id.upperPart, f1);
transaction1.commit();
f1.asd();
Это должно быть что-то, что я делаю очень неправильно, но я не знаю, что это такое
getActivity()
. Кроме того, как ты делаешь этот фрагмент? У вас есть это в вашем layout.xml?Ответы:
commit
планирует транзакцию, то есть она не происходит сразу, а запланирована как работа с основным потоком в следующий раз, когда основной поток будет готов.Я бы предложил добавить
метод для вашего
Fragment
и поставить точку останова на него и посмотреть, когда он вызывается относительно вашего вызоваasd()
. Вы увидите, что он вызывается после метода, в котором вы вызываетеasd()
выходы.onAttach
Вызов , гдеFragment
прикрепляются к ее деятельности и с этой точкойgetActivity()
будет возвращать ненулевые (пь есть такжеonDetach()
вызов).источник
onCreateView
илиonActivityCreated
методах. Я спрашиваю, почему asd () нужно вызывать, когда это происходит при публикации вопросов.commitNow()