2015-06-09 3 views
2

У меня есть проблема с «YouTubePlayerSupportFragment»Null указатель YouTubePlayerSupportFragment

Я получаю ошибку здесь:

`YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.youtubeplayerview);` 

Вот полный код: Я пытался изменить несколько вещей, и теперь у меня есть немного более понятная ошибка. Если я найду его, я отправлю solcuón.

Code Update 11/06/2015, и я получаю новую ошибку:

5429-5429/com.onpocket.activamutua E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NullPointerException 
      at com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart(Unknown Source) 

Код:

public class Activity_demo extends YouTubePlayerSupportFragment /*implements YouTubePlayer.OnInitializedListener */{ 


    private static final int RECOVERY_DIALOG_REQUEST = 10; 
    public static final String API_KEY = "AIzaSyBHZjt1vrkjuwCp4YqTsADNQVDf6KvAXr0"; 
    private String VIDEO_ID = "c_eHTMhEsHU"; 

    JustifiedTextView tv1; 
    ConfigActiva cfg; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_own, container, false); 
    TypefaceUtil.overrideFont(getActivity(), "SERIF", ConfigActiva.nameFontStatic); 
    ConfigActiva.languageCustom(ConfigActiva.defaultLanguageForce, getActivity()); 
    init(rootView);  
    return rootView; 
} 

    public void init(View vRoot){ 

    //YouTubePlayerView youTubeView = (YouTubePlayerView) getActivity().findViewById(R.id.youtubeplayerview); 
    //youTubeView.initialize(API_KEY, this); 
    YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getChildFragmentManager().findFragmentById(R.id.youtubeplayerview); 
    //YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.youtubeplayerview); 
    //youTubePlayerFragment.initialize(API_KEY, this); 

    youTubePlayerFragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) { 
       if (!wasRestored) { 
        youTubePlayer.cueVideo(VIDEO_ID); 
       } 
      } 

     @Override 
     public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { 
      if (errorReason.isUserRecoverableError()) { 
       errorReason.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST).show(); 
      } else { 
       String errorMessage = String.format("YouTube Error (%1$s)", errorReason.toString()); 
       Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
    } 
/* @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, 
             YouTubeInitializationResult errorReason) { 
     if (errorReason.isUserRecoverableError()) { 
      errorReason.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST).show(); 
     } else { 
      String errorMessage = String.format("YouTube Error (%1$s)",errorReason.toString()); 
      Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); 
     } 

    } 

    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider,YouTubePlayer player, boolean wasRestored) { 
     if (!wasRestored) { 
      player.cueVideo(VIDEO_ID); 
     } 
    }*/ 

Мой XML

<fragment 
    android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment" 
    android:id="@+id/youtubeplayerview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

С этим line Wo RKS, но не загружать видео: обновлено 11/06/2015 22:21

YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance(); 
+0

Вы получаете 'NullPointerException', потому что текущая иерархия представлений не содержит фрагмента с идентификатором' youtubeplayerview'. Чтобы помочь вам выявить проблему, нам нужно получить более подробную информацию, начиная с полного метода, который содержит оскорбительную строку кода. Если это не в методе 'onCreate()', где вы вызываете 'setContentView()', включите его также. Кроме того, вам нужно показать нам файл XML, который соответствует идентификатору, отправленному в 'setContentView()'. –

+0

Я обновил свой пост –

+0

Activity_demo расширяет YouTubePlayerSupportFragment? Итак, вы пытаетесь фрагментировать внутри другого фрагмента? Плохая идея, но попробуйте с getChildFragmentManager() – 3mpty

ответ

0

Вы должны добавить фрагмент динамически, потому что: Nested fragments Просто добавить контейнер с идентификатором и использовать этот идентификатор в Transaction.replace. Также используйте onCreateView только для раздувания и построения макета. После этого найдите для просмотра в onViewCreated (View view, ...) из параметра param, он сделает код более чистым.

+0

Если вам нужен дополнительный поиск информации о проблемах, связанных с фрагмент карты Google. Тот же вопрос. – 3mpty

+0

Я сомневаюсь, что OP нужно беспокоиться о том, чтобы динамически загружать фрагмент с помощью диспетчера фрагментов. Скорее, им нужно узнать и понять жизненные циклы активности и фрагментов, а также разницу между Activity и Fragment. Я сильно сомневаюсь, что OP нуждается в подклассе 'YouTubePlayerSupportFragment'. Скорее, они должны переместить большую часть этого кода в соответствующее действие. –

Смежные вопросы