【发布时间】:2017-12-06 12:30:44
【问题描述】:
我知道以前可能有人问过这个问题,但这是我参与的一个特殊情况..
重要 我需要在一个单独的类中执行此操作,而不是一个活动。实际上我的类扩展了别人写的 BaseViewPagerAdapter..
这个想法是,我不能使用 YoutubePlayerView,因为我不能扩展 YoutubeBaseActivity。
我也尝试使用 YoutubePlayerSupportFragment,同样无法正常工作,因为我无法从我的 XML 文件中获取 的引用...
我确实尝试过这样的事情
public class YTVideoFragment extends YouTubePlayerSupportFragment {
private final static String TAG = "YoutubeVideoFragment";
private static final String DEV_KEY = "key";
private static String id;
private YouTubePlayer mPlayer;
public static YTVideoFragment newInstance(String url){
YTVideoFragment videoFragment = new YTVideoFragment();
Bundle bundle = new Bundle();
bundle.putString("uri", url);
videoFragment.setArguments(bundle);
videoFragment.init(0);
Log.i(TAG, "new Instance FINAL ");
return videoFragment;
}
public void init(final int time) {
initialize(DEV_KEY, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
mPlayer = youTubePlayer;
Log.i(TAG, "-=onInitializationSuccess=-");
mPlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
id = getArguments().getString("url");
if (!b){
mPlayer.loadVideo(id, time);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.i(TAG, "-=onInitializationFailure=-");
Log.e(TAG, youTubeInitializationResult.toString());
}
});
}
}
我在扩展 BaseViewPageAdapter 的类中创建了一个实例并尝试这样做
YouTubePlayerSupportFragment youtube = YouTubePlayerSupportFragment.newInstance();
youtube.getFragmentManager().beginTransaction().replace(R.id.youtubeplayerfragment,youtube);
但是我得到一个错误,replace function is applied on an null object reference ..
如果您有任何建议或想法,我将不胜感激
【问题讨论】:
-
我觉得你需要把
youtube.getFragmentManager().beginTransaction().replace(R.id.youtubeplayerfragment,youtube);改成activity.getFragmentManager().beginTransaction().replace(R.id.youtubeplayerfragment,youtube); -
@sunil 我无法获得活动...因为我不在活动课程中
-
那你需要把activity或者context实例传给这个类。
-
你能解释更多吗?或者,至少给我一个例子
-
你在哪个班级做这个?你是如何开始这堂课的?在 intilization 期间,只需传递 '
context' 或 'activity' 就像这样ClassWhereTransaction f = new ClassWhereTransaction(activity);
标签: java android youtube-api