2017-01-17 7 views
0

RelativeLayout에서 확장 한 사용자 정의보기가 있습니다.Android에서 싱글 톤으로 사용자 정의보기

이 사용자 지정보기를 싱글 톤으로 만들려고했습니다.

는이 코드가 있습니다

private static CameraView sCameraView; 
public static synchronized CameraView getInstance(Context context) { 
    if (sCameraView == null) { 
     sCameraView = new CameraView(context); 
    } 
    return sCameraView; 
} 

을하고 조각에서 이것을 사용하려고 :

private CameraView mCameraView = CameraView.getInstance(getActivity().getApplicationContext()); 

mCameraView = (CameraView) mView.findViewById(R.id.camera_preview); 

가이 코드에서 NullPointException을 얻고있다. 그럼 내가 조금 주위를 돌리면 InflateException이 생깁니다.

사용자 지정보기에서 정적 인스턴스에 액세스하여 변수에 할당하려면 어떻게해야합니까? 그 이유는 다음과 같습니다.

CameraView.getInstance(getActivity().getApplicationContext()) = (CameraView) mView.findViewById(R.id.camera_preview); 

은 허용되지 않습니다.

도움이 될 것입니다.

+1

"이 사용자 지정보기를 싱글 톤으로 만들려고했습니다."- 메모리가 누출되어 (독점적 인 위험 만들기) 다른보기에서는 작동하지 않습니다 (싱글 톤을 쓸모 없게 만듭니다). 나는 다른 계획을 생각 해낼 것을 강력하게 제안한다. 그 외에도 LogCat을 사용하여 충돌과 관련된 Java 스택 추적을 검사하십시오. https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this 스택 추적, 질문 편집 및 게시. – CommonsWare

+0

좋아요, 답변 주셔서 감사합니다 # CommonSWare. 그 싱글 톤은 좋은 선택이 아니라는 것을 알았지 만, 나는 안드로이드에서 싱글 톤 뷰를 갖는 것에 대해 실험하고있었습니다. – JWL

답변

0

private static CameraView sCameraView; 정적 참조이지만 바람직하지 않습니다. Read this

정적으로 UI 요소를 선언하면 안됩니다. 희망이 당신의 문제를 해결합니다.