2016-02-08 2 views
5

Ich verwende Master/Detail Layout in einer Tablette, auf der linken Seite einige Tasten, um mehrere Fragmente zu öffnen, enthält eines der Fragmente Youtube-Player.schließen Vollbild von Youtube Player auf der Rückseite Taste innerhalb Fragment

Das Problem,

Wenn der YouTube-Player ist Vollbild, und ich drücken Sie die Taste zurück, die AktivitätonBackPressed ist, und die ganze Aktivität genannt wird geschlossen.

Was ich versucht habe,

1- auf KeyListener Hinzugefügt für Elternfragment (das ist das Youtube Fragment enthält) und zu handhaben, wenn klicken Sie auf Zurück-Taste, aber diese Hörer nur aufgerufen, wenn der Spieler nicht Vollbild ist , sonst wird es nicht genannt,

rootView.setFocusableInTouchMode(true); 
     rootView.requestFocus(); 
     rootView.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
        try { 
         // Close full screen 
         return true; 
        } catch (Exception e) { 
         AHHExceptionHandler.handleException(e); 
        } 
       } 
       return false; 
      } 
     }); 

2- Added onKeyListener zu youtubeFragment Ansicht zu überprüfen, ob es Vollbild dann den Vollbildmodus

youTubeFragment.getView().setFocusableInTouchMode(true); 
youTubeFragment.getView().requestFocus(); 
    youTubeFragment.getView().setOnKeyListener(new View.OnKeyListener() { 
               @Override 
               public boolean onKey(View v, int keyCode, KeyEvent event) { 
                if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
                 try { 
                  youTubePlayer.setFullscreen(false); 
                  return true; 
                 } catch (Exception e) { 
                  AHHExceptionHandler.handleException(e); 
                 } 
                } 
                return false; 
               } 
              }); 
schließen

Und dies wird auch nicht in allen Fällen genannt.

Ich muss die Hardware-Zurück-Taste behandeln, während der Youtube-Player im Vollbildmodus ist, der Vollbildmodus ist geschlossen und die Anwendung ist in ihrem vorherigen Zustand.

Danke.

Edit 1: - Ich will das im Innern des Fragments behandeln, anstatt sie in der übergeordneten Aktivität Handhabung, ich habe es innerhalb der übergeordneten Aktivität bereits Handhabung, aber ich weiß nicht, wie diese Lösung.

+0

Haben Sie eine Lösung für diese andere finden als das, was Sie hier beschrieben oder das Hinzufügen von youtube-spezifischer Code in der Aktivität onBackPressed? – ashishduh

+1

Nein, ich konnte keine andere Lösung finden –

Antwort

2

Sie können OnBackPressed() in Ihrer Aktivität überschreiben und für den Fall, dass Ihr Player im Vollbildmodus ist, können Sie ihn hier behandeln und NOT super.onBackPressed() aufrufen.

Wenn es nicht Fullscreen-Aufruf ist super.onBackPressed().

+0

Die Aktivität hat keine Beziehung mit dem Youtube-Player, der Youtube-Player ist im Fragment, und ich möchte das nicht in der Aktivität behandeln. Ich muss Code unabhängig machen, wie ich kann. –

+0

Der Youtube-Player steht im Zusammenhang mit dem Aktivitätskontext. Wünschen Sie viel Glück, um zu finden, nach was Sie suchen. –

0

Nur zu Andre's Antwort hinzuzufügen.

In Ihren Eltern Aktivität hinzufügen:

GVMainActivity mainActivity = (GVMainActivity) getActivity(); 

Dann auf YouTubePlayerFragment Initialisierung:

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

     player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() { 
      @Override 
      public void onFullscreen(boolean b) { 
       mainActivity.isYouTubePlayerFullScreen = b; 
      } 
     }); 

    } 

Jetzt ist Ihre Activity hat YouTubePlayer Zugang und

public YouTubePlayer youTubePlayer; 
public boolean isYouTubePlayerFullScreen; 

In Ihrem Fragmente hinzufügen Information, ob der Player im Vollbildmodus ist oder nicht.

nächste in Ihrem Activity, außer Kraft setzt onBackPressed wie folgt aus:

@Override 
public void onBackPressed() { 
    if (youTubePlayer != null && isYouTubePlayerFullScreen){ 
      youTubePlayer.setFullscreen(false); 
    } else { 
     super.onBackPressed(); 
    } 
} 
Verwandte Themen