У меня есть фрагмент (NavMenuStats), который расширяет родительский фрагмент (NavMenu).
Этот родительский фрагмент переопределяет метод onCreateView, например:
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (some condition) {
View view = ...
// Do stuff and return view. Everything works well
return view;
} else {
return null; // since @Nullable
}
}
Но когда я использую AndroidAnnotations в классе, наследующем этот фрагмент, для которого «какое-то условие» ложно, он не возвращает представление. Все просто пусто, и @AfterViews даже не вызывается.
Я также пробовал вместо возврата null:
...
} else {
return super.onCreateView(inflater, container, savedInstanceState);
}
Я знаю, что должен позволить AndroidAnnotations обрабатывать инфляцию макета, как указано здесь: androidannotations @AfterViews не вызывает, а editText имеет значение null
Вот почему я возвращаю null или супер-метод в родительском фрагменте onCreateView ().
Что мне не хватает? Любые идеи?
Большое спасибо.




Трудно ответить без кода NavMenuStats, но я думаю, что ваша проблема в этом.
Я думаю, вы также добавили метод onCreateView в свой NavMenuStats, поэтому вы не позволяете AndroidAnnotations писать его за вас.
Попробуйте полностью удалить метод onCreateView вашим аннотированным классом @EFragment.
В этой ситуации это работает:
MainFragment
public class MainFragment extends Fragment{
public boolean nullView = false;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return nullView ? null : inflater.inflate(R.layout.fragment_main, container, false);
}
}
SonFragment
@EFragment(R.layout.fragment_son)
public class SonFragment extends MainFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.nullView = true;
}
}
Может быть, вы забыли добавить сгенерированный фрагмент сына с символом _ в конце?
Можете ли вы удалить его также из родительского фрагмента или он вам понадобится любой ценой? Я имею в виду, что вы также можете аннотировать родительский фрагмент и позволить AndroidAnnotations работать для вас также там. Может ли это быть возможным решением?
Это было мое первое решение: D Но, к сожалению, нет, я не могу его удалить.
Ух ты. Большое спасибо. Дайте мне знать, если вам понадобится дополнительная информация.
Я уже ответил :) дайте мне знать, если вы обнаружите свою проблему
Большой! Это сработало отлично. Я просто забыл добавить ребенка с "_" в конце адаптера. Не могу поверить, что упустил из виду, но я бы никогда не добился этого без вашего ответа. Спасибо.
Спасибо за ответ. Извините, я не могу опубликовать здесь большую часть кода. Но нет, у меня нет onCreateView () в NavMenuStats. Он использует onCreateView () из своего родительского класса. Я попытался переопределить его и вызвать супер-метод / оставить его пустым, но без радости. Есть ли другой способ игнорировать onCreateView из родительского фрагмента?