Видео не может быть включено в onActivityResult()

У меня есть два действия: MainActivity имеет youtubePlayerView для отображения видео с YouTube и кнопку «Выбрать», ChoseVideoActivity имеет 2 кнопки с текстом «Видео1» и «Видео2».

В MainActivity я нажал кнопку "Выбрать", чтобы открыть ChoseVideoActivity. В ChoseVideoActivity я мог нажать любую из двух кнопок.

При нажатии кнопки с текстом «video1» действие отправляет обратно идентификатор YouTube видео 1. При нажатии кнопки с текстом «video2» действие отправляет обратно идентификатор YouTube видео 2.

В onActivityResult я звоню cueVideo() с идентификатором, который отправляется обратно. Это должно было сработать, но не сработало. Это работало нормально, когда я работаю в той же деятельности.

Я использовал API проигрывателя YouTube для Android.

onActivityResult() в MainActivity

 private void addEvents() {
    btChose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ChoseVideoActivity.class);
            startActivityForResult(intent,REQUEST_CODE);
        }
    });
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == REQUEST_CODE && resultCode == RESULT_OK && data!=null) 
    {
        String link = data.getStringExtra("LINK");
        player.cueVideo(link);
        Toast.makeText(this, link, Toast.LENGTH_SHORT).show();
    }
}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
    player = youTubePlayer;
}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    Toast.makeText(this, "Error!",Toast.LENGTH_LONG).show();
}

Нажмите прослушиватель в ChoseVideoActivity

private void addEvents() {
    btVideo1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("LINK",link_video1);
            setResult(RESULT_OK,intent);
            finish();

        }
    });
    btVideo2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("LINK",link_video2);
            setResult(RESULT_OK,intent);
            finish();

        }
    });
}

person Hoàng Phùng    schedule 28.11.2018    source источник


Ответы (1)


Так как я здесь новенький, то не могу прокомментировать ваш пост. Ваш код выглядит нормально. Поскольку мы не видим, как вы открываете следующее действие, поэтому я хочу убедиться, действительно ли вы используете функцию startActivityForResult для открытия второго действия? Как это:

Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, 0);
person user3151301    schedule 28.11.2018
comment
Да, именно так я начинаю вторую активность. Но что в ней не так? - person Hoàng Phùng; 28.11.2018
comment
Вы уверены, что вы действительно выполняете обратный вызов onActivityResult? если да, то вы проверяете, действительно ли вы собираетесь выполнить условие if, и можете отладить значение LINK, в противном случае вы можете попытаться поместить строку URL непосредственно в функцию cueVideo и посмотреть, работает ли видео или нет. если да, то означает, что значение вашей ссылки возвращает значение null или неправильное значение. пожалуйста, проверьте это и дайте мне знать - person user3151301; 29.11.2018
comment
я поместил строку URL непосредственно в функцию cueVideo, она все та же, она не работает :( - person Hoàng Phùng; 29.11.2018
comment
Затем мне нужно проверить, как работает функция cueVideo, и убедиться, что вы действительно входите в этот обратный вызов? Вы можете увидеть всплывающее сообщение, которое вы печатаете в обратном вызове onActivityResult? - person user3151301; 29.11.2018
comment
Не могли бы вы проверить, идет ли он к обратному вызову onInitializationSuccess, кажется, что контекст проигрывателя равен нулю, поэтому он не воспроизводит видео. - person user3151301; 29.11.2018