无法重新加载第二类活动的YouTube视频



你好,程序员,

我正在遇到有关我的Android应用的一些问题,我目前 继续工作。为此,我只需要提及我有两个 活动(一个称为MainAttivity.Class,第二个称为 filterActivity.class)。

我的Mainactiviy班级的目的是展示电影(流派, 一年,评分等) specifik视频的预告片。

在Mainactiviy的on创作方法中,即将初始化 YouTubePlayerView(因为我希望随机弹出一部随机的电影 您打开应用程序)。

我的过滤性类别的目的是选择一些Specfik 搜索电影的标准。

我正在从这样的主动脉中打开过滤性:

public void openFilter(){
         Intent askIntent = new Intent(this, FilterActivity.class);
         startActivityForResult(askIntent, 1); }

在我的过滤性中,我从新的 像这样创建的电影:

movieIntent.putExtra("url", a.getUrl());
             movieIntent.putExtra("title", a.getTitle());
             movieIntent.putExtra("rating", (String.valueOf(a.getRating())));
             movieIntent.putExtra("plot", a.getDesc());
             movieIntent.putExtra("year", (String.valueOf(a.getYear())));
             movieIntent.putExtra("genre", a.getGenres());
             setResult(RESULT_OK, movieIntent);
             finish(); 

这就是我从MainActivity获取数据的方式:

protected void onActivityResult(int requestCode, int resultCode, final Intent data){
    if(resultCode == RESULT_OK){
        titleView.setText(data.getStringExtra("title"));
        ratingView.setText(data.getStringExtra("rating"));
        plotView.setText(data.getStringExtra("plot"));
        yearView.setText(data.getStringExtra("year"));
        genreView.setText(data.getStringExtra("genre"));
        url = data.getStringExtra("url");     }

这基本上是我需要显示的。(顺便说一句,这都是有效的): 我正在获得新创建的电影和标准匹配。

但是,在OnActivityResult中,我无法将我的YouTubePlayerView带到 用特定的URL重新加载视频。旧视频仍在那里, 和可玩。我已经检查了,我确实从中得到了一个新的URL 过滤性。

我解决这个问题的唯一方法是基本上重新加载 活动,然后(因为我在我的 ongreate方法),标准不匹配。

任何建议都将不胜感激!

真诚

onActivityResult中,释放当前播放器并重新定位 YoutubePlayerView

@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
    if (resultCode == RESULT_OK) {
        mVideoId = getVideoId(data.getStringExtra("url"));
        mPlayer.release();
        mYoutubeplayerView.initialize(mApiKey, this);
    }
}

MainActivity的完整示例是:

public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
    String mVideoId = "5xVh-7ywKpE";
    String mApiKey = "YOUR_API_KEY";
    YouTubePlayerView mYoutubeplayerView;
    YouTubePlayer mPlayer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mYoutubeplayerView = (YouTubePlayerView) findViewById(R.id.player);
        mYoutubeplayerView.initialize(mApiKey, this);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFilter();
            }
        });
    }
    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
                                        YouTubePlayer youTubePlayer, boolean b) {
        mPlayer = youTubePlayer;
        mPlayer.loadVideo(mVideoId);
    }
    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider,
                                        YouTubeInitializationResult youTubeInitializationResult) {
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
        if (resultCode == RESULT_OK) {
            mVideoId = getVideoId(data.getStringExtra("url"));
            mPlayer.release();
            mYoutubeplayerView.initialize(mApiKey, this);
        }
    }
    private String getVideoId(String url) {
        String pattern = "(?<=watch\?v=|/videos/|embed\/)[^#\&\?]*";
        Pattern compiledPattern = Pattern.compile(pattern);
        Matcher matcher = compiledPattern.matcher(url);
        if (matcher.find()) {
            return matcher.group();
        }
        return "";
    }
    public void openFilter() {
        Intent askIntent = new Intent(this, FilterActivity.class);
        startActivityForResult(askIntent, 1);
    }
}

请注意,我已经使用这篇文章从URL路径中提取YouTube videoid

相关内容

  • 没有找到相关文章

最新更新