마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이벤트 리스너 질문입니다.

0 추천
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
    camera.startPreview();

    //auto_Focusing(camera);

    final Button Btn_Focus = (Button) findViewById(R.id.Btn_Focus);
    Btn_Focus.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            Btn_Focus.setEnabled(true);

            auto_Focusing(camera);
        }
    });

    Binarization(camera, holder);

}

 

============================
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
        {
            camera.startPreview();

            auto_Focusing(camera);

            final CameraSurfaceView cameraView = new CameraSurfaceView(getApplicationContext());
            final FrameLayout previewFrame = (FrameLayout) findViewById(R.id.previewFrame);

            previewFrame.setOnTouchListener(new OnTouchListener()
            {
                @Override
                public boolean onTouch(View v, MotionEvent event)
                {
                    if(event.getAction()==MotionEvent.ACTION_UP)
                    {
                        auto_Focusing(camera);
                    }
                    return false;
                }
            });

            Binarization(camera, holder);
        }

이런식으로 두개의 코드를 짜봤습니다. 물론 밑에 코드가 원래 하려던 방식이었고 화면터치가 안되길래 버튼클릭으로 하려고 했으나 전부 "앱이름 앱이 중지하였습니다" 가 뜨고 종료됩니다.ㅣ
로그 확인 결과는  
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.setOnTouchListener(android.view.View$OnTouchListener)' on a null object reference
                                                                          at com.example.ai.camera.MainActivity$CameraSurfaceView.surfaceChanged(MainActivity.java:244)
244번 라인은 두 코드 전부 previewFrame.setOnTouchListener(new OnTouchListener() 입니다.
이유를 아시는분은 답변해주시기 바랍니다.
익명사용자 님이 2017년 1월 16일 질문
final FrameLayout previewFrame = (FrameLayout) findViewById(R.id.previewFrame);
--------------------------------------------------------------------------------------------------------
xml에 FrameLayout 의 id값이 previewFrame으로 되어 있나요?
네네 xml에 프레임레이아웃 아이디 값이 previewFrame으로 되어 있습니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...