带有YouTubeBaseActivity的getSupportActionBar

San*_*air 11 android android-youtube-api

我正在尝试在我的应用上播放youtube视频.我理解这可以通过将活动扩展为YouTubeBaseActivity来实现,这样做我无法访问您的工具栏.

mActionBar = (Toolbar) findViewById(R.id.toolbar);
        if (mActionBar != null)
        {
            setSupportActionBar(mActionBar);
        }

        getSupportActionBar().setTitle(getResources().getString(R.string.youtubetitle));
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)

我得到getSupportActionbar无法解决.是否有一种通过扩展活动YouTubeBaseActivity来访问工具栏的简单方法.

我做错了吗?

谢谢!

PPa*_*san 35

YouTubeBaseActivity扩展Activity,(与例如相反AppCompatActivity),因此该getSupportActionBar()方法不存在.

您可以尝试使您的类扩展AppCompatActivity,并YouTubePlayerSupportFragment在您通常使用的地方使用YouTubePlayerView.

编辑:

将以下内容添加到您的layout文件中,代替aYouTubePlayerView

<fragment
    android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
    android:id="@+id/youtube_fragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

访问它在onCreate()你的Activity以同样的方式,你会任何其他静态Fragment

public class CustomYouTubeActivity extends AppCompatActivity implements YouTubePlayer.OnInitialisedListener {

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

        setContentView(R.layout.fragments_demo);

        YouTubePlayerSupportFragment frag =
            (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
        frag.initialize(DeveloperKey.DEVELOPER_KEY, this);
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
  boolean wasRestored) {
        if (!wasRestored) {
        //I assume the below String value is your video id
        player.cueVideo("nCgQDjiotG0");
    }

    @Override
    public void onInitializationFailure (YouTubePlayer.Provider provider, YouTubeInitializationResult error) {
        if (errorReason.isUserRecoverableError()) {
            errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
        } else {
            String errorMessage = String.format(getString(R.string.error_player), errorReason.toString());
            Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
        }
    }    

}
Run Code Online (Sandbox Code Playgroud)