GetSurfaceTexture () возвращает null

У меня есть следующий код:

LayoutInflater factory = LayoutInflater.from(this); View view_with_buttons_on = factory.inflate(R.layout.buts, null); view_with_buttons_on.setBackgroundColor(Color.TRANSPARENT); game_frame_layout = new FrameLayout(getApplicationContext()); surface_view_extension = new SurfaceViewExtension(getApplicationContext()); game_frame_layout.addView(surface_view_extension); game_frame_layout.addView(view_with_buttons_on); setContentView(game_frame_layout); preview_texture_view = (TextureView) findViewById(R.id.tex1); try { camera.setPreviewTexture(preview_texture_view.getSurfaceTexture()); } catch (IOException e) { e.printStackTrace(); } 

Макет buts.xml содержит набор кнопок, а также TextureView надписью "@id/tex1" . Похоже, что preview_texture_view.getSurfaceTexture() возвращает null. В документации говорится:

Этот метод может возвращать значение null, если представление не привязано к окну или если текстура поверхности еще не была инициализирована.

Я предполагаю, что поверхность уже прикреплена к окну, потому что кнопки видны, поэтому я предполагаю, что моя ошибка не должна быть инициализирована preview_texture_view, но я понятия не имею, что значит «инициализировать» preview_texture_view, кроме того, что я уже сделал. Я видел некоторый связанный образец кода и не могу определить какой-либо процесс инициализации.

EDIT: Может потребоваться немного времени, чтобы прикрепить к окну или инициализировать. Может быть, мне нужно настроить обратный вызов, когда он будет готов? .. просто гадать.

Решенный: Мое предположение оказалось верным. Чтобы исправить ошибку, настройте следующее:

Внедрение активности

 TextureView.SurfaceTextureListener 

Добавить метод onSurfaceTextureAvailable()

вызов

 preview_texture_view.setSurfaceTextureListener(this);