findViewById(android.R.id.statusBarBackground) и findViewById(android.R.id.navigationBarBackground) возвращают ноль?

Я примеряла Nougat а также Oreo, Оба телефона являются стоковыми Android и оба вида видны и на экране. Мне нужны эти взгляды для моего sharedElementTransition, Этот вопрос уже задавался здесь, но без ответа. Это происходит со многими людьми, и они обсуждают это здесь в комментариях к ответу Алекса Локвуда, но без определенного решения.

я звоню findViewById() от моей деятельности и попробовал оба

findViewById(android.R.id.statusBarBackground);

а также

getWindow().getDecorView().findViewById(android.R.id.statusBarBackground);

Я позвонил findViewById() после setContentView()

Возможно связанный, но в отличие progressBar, statusBar а также navigationBar виды существуют почти все время.

Код:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
        getWindow().setSharedElementEnterTransition(getTransitionSet());
        getWindow().setSharedElementExitTransition(getTransitionSet());
        getWindow().setSharedElementReturnTransition(getTransitionSet());
        getWindow().setSharedElementReenterTransition(getTransitionSet());
        ActivityCompat.postponeEnterTransition(this);
        setEnterSharedElementCallback(mCallback);
    }
    setContentView(R.layout.summary_image_preview);
    navigationBar = getWindow().getDecorView().findViewById(android.R.id.navigationBarBackground);
    statusBar = getWindow().getDecorView().findViewById(android.R.id.statusBarBackground);
    mToolbar = (Toolbar) findViewById(R.id.toolBar);
    // etc...

}

Toolbar это нормальный вид внутри моего контента, и он работает нормально. но statusBar а также navigationBar are null

1 ответ

Views вернуть ноль в onCreate() функция. Я проверил то же самое Views внутри моего Fragment"s onViewCreated() и они не были нулевыми. Я исправил проблему, отложив findViewById() до того момента, когда мне это нужно.

Для некоторых из них, в то время как другие виды доступны в onCreate(), Представления за пределами вашего приложения доступны только после Fragment View создание

Другие вопросы по тегам