Android Аннотации не работают с унаследованным классом - PullRequest
0 голосов
/ 04 мая 2018

У меня есть фрагмент (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

Вот почему я возвращаю нуль или метод super в родительском фрагменте onCreateView ().

Что мне не хватает? Есть идеи?

Большое спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Трудно ответить без вашего кода NavMenuStats, но я думаю, что ваша проблема находится там.

Я думаю, что вы также добавили метод onCreateView в свои NavMenuStats, поэтому вы запрещаете Android-аннотациям написать его для вас.

Попробуйте полностью удалить 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;
    }
}

Может быть, вы забыли добавить созданный фрагмент сына с _ в конце?

...