上午繼承稱爲ISurfaceTextureListener的接口在此代碼如何避免把我的整個代碼分爲靜態
class Camera
{
TextureView mTextureView;
Context _context;
public Camera (Context context, TextureView textureView)
{
_context = context;
mTextureView = textureView;
mTextureView.SurfaceTextureListener = new TextureViewListener();
}
private class TextureViewListener : Java.Lang.Object, TextureView.ISurfaceTextureListener
{
public void OnSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
{
OpenCamera(width, height); //Error Occurring Here
}
}
public void OpenCamera(int width, int height)
{
//Codes
}
}
錯誤:一個對象引用,需要訪問非靜態字段,方法 等
我不想讓OpenCamera()靜態,因爲我將不得不將我的整個代碼轉換爲靜態方法,那麼有沒有辦法避免它?
注意:我只能繼承接口,因爲我無法重寫對象偵聽器的「OnSurfaceTextureAvailable」方法,我發現的唯一方法是爲該對象的偵聽器分配繼承的類,它工作得很好。
OpenCamera()在哪裏生活?你可以在郵件中包含該代碼嗎? –
您必須創建OpenCamera所屬類的實例,然後在該對象上調用OpenCamera。 –
這個錯誤很奇怪,如果你在發佈實例函數時任何非靜態成員必須已經可用,因爲當沒有顯式使用實例時假定「this」。添加更多的代碼來理解錯誤發生的原因(至少OpenCamera函數)。 – Gusman