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

에러에 대한 질문입니다.

0 추천

네비게이션 드로어에서 메뉴 아이콘을 클릭했을때 튕김 현상이 발생하면서 

에러로그가 다음과 같이 출력되었습니다.

해결 방안을 알려주시면 감사하겠습니다.

public class Activity_youtube extends Fragment
implements YouTubePlayer.OnInitializedListener {

    View v;
    YouTubePlayerView youTubeView;
    Button button;
    YouTubePlayer.OnInitializedListener listener;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        //inflate메소드는 XML데이터를 가져와서 실제 View객체로 만드는 작업을 합니다.
        v = inflater.inflate(R.layout.activity_youtube, container, false);

        return v;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        youTubeView = (YouTubePlayerView)getView().findViewById(R.id.youtube_fragment);

        //리스너 등록부분
        listener = new YouTubePlayer.OnInitializedListener(){

            //초기화 성공시
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                youTubePlayer.loadVideo("rNnePxt7K-U");//url의 맨 뒷부분 ID값만 넣으면 됨
            }
            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
            }
        };
        button.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                //첫번째 인자는 API키값 두번째는 실행할 리스너객체를 넘겨줌
                youTubeView.initialize("AIzaSyB8B5KSJKVt0sxP87VLIM91PkPWHxbhtUo",listener);

            }
        });
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

    }
}

07-04 06:24:59.442 719-719/com.test.test/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.test.test, PID: 719
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
        at com.test.test.Activity_youtube.onCreate(Activity_youtube.java:42)
        at android.app.Fragment.performCreate(Fragment.java:2489)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1237)
        at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2407)
        at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2186)
        at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2142)
        at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2043)
        at android.app.FragmentManagerImpl$1.run(FragmentManager.java:719)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

 

익명사용자 님이 2018년 7월 4일 질문

1개의 답변

0 추천
 
채택된 답변

youTubeView = (YouTubePlayerView)getView().findViewById(R.id.youtube_fragment); 부분이 문제가 된 것으로 

Fragment 생명주기에 따르면, onCreate 가 호출 된 이후 onCreateview 가 호출 되는데,

 

아직 view 가 생성되기전에,  getView를 부르다보니 null이  반환되어 NullPointerException 가 발생했습니다.

onCreate 에 있는 코드를 onCreateview 로 옮기시면 해결 될 겁니다.

 

 

익명사용자 님이 2018년 7월 5일 답변
...