1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

YouTubePlayer travando a aplicacao ao trocar de fragment

Eu tenho 3 fragmentos com abas deslizantes e eu quero colocar youtube api em 1. O vídeo do youtube é reproduzido, mas quando eu deslizo a tela para outro fragmento toda a minha aplicação trava, a tela fica piscando, e não há como mecher em nada na app.O Aplicativo nem sequer minimiza de tao travado que fica, e fica piscando muito, eu tenho que reiniciar o telefone para destrava-lo. Se eu der um release()no youtubeplayer depois de pausa-lo posso alternar entre as guias sem problema, mas não consegui fazer o release() quando trocar o fragmento, já tentei o OnStop (), mas não é chamado, tentei com um slidertab listerner, mas não deu certo tambem. Meu código:

minha activity:

import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import com.development.resio.cursojava.R;
import com.development.resio.cursojava.adapter.ViewPagerAdapter;
import com.development.resio.cursojava.slidingTab.SlidingTabLayout;
import com.google.android.youtube.player.YouTubePlayerSupportFragment;

public class AulaActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_aula);
        Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.setTitle("Curso de Java");

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
        ViewPager viewPager = (ViewPager)findViewById(R.id.viewPager);
        viewPager.setAdapter(viewPagerAdapter);
        SlidingTabLayout tabLayout = (SlidingTabLayout)findViewById(R.id.slidingTabLayout);
        tabLayout.setDistributeEvenly(true);
        tabLayout.setViewPager(viewPager);


        YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.main,fragment).addToBackStack(null).commit();

    }
}

meu fragment:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

import com.development.resio.cursojava.R;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerSupportFragment;

/**
 * A simple {@link Fragment} subclass.
 */
public class AulaVideoFragment extends Fragment {

    YouTubePlayerSupportFragment youTubePlayerFragment;
    public AulaVideoFragment() {
        // Required empty public constructor
    }

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       final View view = inflater.inflate(R.layout.fragment_aula_video, container, false);

       youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.replace(R.id.youtube_layout,youTubePlayerFragment).commit();

        youTubePlayerFragment.initialize("AIzaSyCVHYvgdScmc2D6c6dbr9zNtITF-YRKzSM", new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, final YouTubePlayer youTubePlayer, boolean b) {
                if (!b) {
                    youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
                    youTubePlayer.setManageAudioFocus(false);
                    youTubePlayer.cueVideo("NUsoVlDFqZg");
                    youTubePlayer.play();

                }
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
                Toast.makeText(getActivity(), "Erro ao reproduzir o video", Toast.LENGTH_SHORT).show();
            }
        });
        Button button = (Button)view.findViewById(R.id.button2);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                youTubePlayerFragment.onDetach();
            }
        });

        return view;
    }
}

meu viewPagerAdapter:

import android.support.v4.app.FragmentStatePagerAdapter;
import com.development.resio.cursojava.activity.fragment.AulaExercicioFragment;
import com.development.resio.cursojava.activity.fragment.AulaTextoFragment;
import com.development.resio.cursojava.activity.fragment.AulaVideoFragment;


public class ViewPagerAdapter extends FragmentStatePagerAdapter {
    String[] tabs = {"ARTIGO","VIDEO","EXERCICIOS"};
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new AulaTextoFragment();
            case 1:
                return new AulaVideoFragment();

            case 2:
                return new AulaExercicioFragment();
        }
        return null;
    }

    @Override
    public int getCount() {
        return tabs.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return tabs[position];
    }
}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags android ou faça a sua própria pergunta.