我的YouTube播放器崩溃了,我不知道为什么。
这是我的Java代码: @覆盖 protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_youtube); 工具栏工具栏=(工具栏)findViewById(R.id.toolbar); setSupportActionBar(栏);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
playerFragment = (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_player_fragment);
playerFragment.initialize(YouTubeKey, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
mPlayer = youTubePlayer;
//Enables automatic control of orientation
mPlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION);
//Show full screen in landscape mode always
mPlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
//System controls will appear automatically
mPlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI);
if (!b) {
mPlayer.cueVideo("xxx");
mPlayer.loadVideo("xxx");
}
else
{
mPlayer.play();
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
mPlayer = null;
String ausgabe = youTubeInitializationResult.toString();
Log.d("hi", ausgabe);
} }
问题解决了
答案 0 :(得分:0)
现在我们需要一些额外的信息来明确回答这个问题,但似乎这一行返回null,这表明你想要查看你的资源XML并确保你抓住这个片段正常。
getSupportFragmentManager().findFragmentById(R.id.youtube_player_fragment);
您可以从查看此相关问题中受益:
我怀疑问题可能是在您的资源XML中,您没有使用支持库声明片段。
尝试使用:
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
答案 1 :(得分:0)
我尝试了很多这些建议,但没有一个适合我。我最终创建了一个容器,然后在运行时用YouTubeFragment替换它。这对我来说非常好。
在我的布局文件中创建了一个containerView,请注意它只是我布局文件的一部分
<View
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray90"/>
<FrameLayout
android:padding="20dp"
android:id="@+id/youtubeContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
然后我创建了一个youtube片段的实例,如下所示
youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
然后我使用下面的标准方法替换它: -
FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.youtubeContent,youTubePlayerFragment).commit();
我希望这有助于其他人