我有以下代碼: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含有一組按鈕,以及標記"@id/tex1"
一個TextureView
。 看來preview_texture_view.getSurfaceTexture()
返回null。文檔說:
該方法可以返回null如果視圖沒有連接到一個窗口或 如果表面紋理尚未初始化。
我假設,因爲按鈕是可見的表面必須已經連接到一個窗口,所以我想我的錯誤,必須沒有初始化preview_texture_view - 但我不知道這意味着什麼「初始化」等preview_texture_view比我已經做了什麼。我見過一些相關的示例代碼,並且無法弄清楚任何初始化過程。
編輯:也許它需要一點時間來附加到窗口或被初始化。也許我需要爲它準備好時設置一個回調?只是猜測。
你在哪裏執行getSurfaceTexture?這是你的活動的onCreate方法? – GhostDerfel
是的......等等等等等等等等等等等等等等等等等等。 – Mick
對不起,但我不明白你的評論,你能解釋一下自己嗎? – GhostDerfel