私は同じ問題を抱えていました.YouTubeプレーヤーをアプリに追加したかったのですが、Sherlockをアプリから削除したくありませんでした(サポートライブラリに基づく)。そして悪いことに、エラーが発生したため、プレーヤーを使用できませんでした (フラグメントの膨張、YouTubePlayerView は特別なアクティビティなしでは開始できません)。
何が機能したか: SherlockFragmentActivity、FragmentManager (getSupportFragmentManager())、および YouTubePlayerSupportFragment を使用しました。XML に追加する代わりに、コードからすべてを作成しました。私のレイアウトは次のようになります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/fragmentz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
および Java コード:
package com.example.youtubetesting;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener;
import com.google.android.youtube.player.YouTubePlayerSupportFragment;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class MainActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment();
fragmentTransaction.add(R.id.fragmentz, fragment);
fragmentTransaction.commit();
fragment.initialize("Your API KEY HERE",
new OnInitializedListener() {
@Override
public void onInitializationSuccess(Provider arg0,
YouTubePlayer arg1, boolean arg2) {
if (!arg2) {
arg1.loadVideo("wKJ9KzGQq0w");
}
}
@Override
public void onInitializationFailure(Provider arg0,
YouTubeInitializationResult arg1) {
}
});
}
}
通常の方法でビューを膨らませているときに Android がエラーを返す理由はわかりませんが、これは完全に機能します。