2016-06-21 4 views
0

Ich fange an zu lernen, wie man ein Android TV zum ersten Mal baut, also entschuldige ich mich für eine wahrscheinlich offensichtliche Antwort auf diese Frage. Im Grunde genommen, ich versuche zu replizieren, wie die Android TV Youtube App wird angezeigt, wenn es keine Internet-Konnektivität ist wie folgt:Erstellen Sie ein Overlay über ein Fragment in Android TV?

enter image description here

YouTube zeigt das Hauptfragment (glaube ich) in den Rücken ohne Videos und Es scheint eine transparente Überlagerung mit einem ImageView, TextView und Button zu geben. Sobald eine Internetverbindung besteht und der Benutzer auf die Schaltfläche Wiederholen klickt, wird der Videoinhalt geladen und die Überlagerung verschwindet.

Ich versuche, diese genau die gleiche Technik zu erreichen, und mit Internet-Konnektivität, ich habe im Moment:

enter image description here

Ohne Internet-Konnektivität, würde ich YouTube zeigen, wie etwas ähnliches wie tut.

Hier einige meiner grundlegenden Code:

MainActivity.java:

public class MainActivity extends Activity 
{ 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<fragment 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_browse_fragment" 
    android:name="com.ui.MainFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.ui.MainActivity" 
    tools:deviceIds="tv" 
    tools:ignore="MergeRootFrame" /> 

MainFragment.java:

public class MainFragment extends DetailsFragment 
{ 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 

     setupUIElements(); 

     setupThings(); 
    } 

    public void setupThings() 
    { 
     if (isOnline() == true) 
     { 
      prepareBackgroundManager(); 
      loadRows(); 
      setupEventListeners(); 
     } 
     else 
     { 
      // I don't know what to do here??? 
     } 
    } 

    public Boolean isOnline() 
    { 
     try 
     { 
      Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com"); 
      int returnVal = p1.waitFor(); 
      boolean reachable = (returnVal == 0); 

      return reachable; 
     } 
     catch (Exception e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return false; 
    } 
} 

Einfach, wenn es Internet gibt Verbindung lade ich die Videos aus dem Internet, ansonsten informiere ich den Nutzer wie YouTube.

Wo ich stecke ist in der Else-Anweisung. Ich bin mir nicht sicher, was genau dort erstellt werden soll, um dieses Overlay zu erreichen.

ich bei einigen Lösungen in Bezug auf Schalt Fragmente haben gesucht hier:

  1. Switching between Fragment view
  2. How to switch between fragments during onclick?

Aber ich bin nicht sicher, ob, für meine Zwecke, ich müsste mach das?

Kann mir jemand in die richtige Richtung zeigen? Ich möchte nicht, dass jemand den ganzen Code genau wie die YouTube App schreibt, aber ich hätte gerne eine kleine Probe, mit nur vielleicht einer Button oder TextView? Dies erlaubt mir, die Struktur zu verfolgen und sie an meine Anforderungen anzupassen.

Danke.

Antwort

1

Sie können die Leanback Sample app betrachten, die ein Beispiel für eine BrowseErrorFragment enthält.

Zur Anzeige:

BrowseErrorFragment errorFragment = new BrowseErrorFragment(); 
getFragmentManager().beginTransaction().replace(R.id.main_frame, errorFragment) 
         .addToBackStack(null).commit(); 
+0

Ihre Antwort wies mich in die richtige Richtung, habe ich 'getFragmentManager() begintransaction() hinzufügen (R.id.main_browse_fragment, internetError)...commit(); 'stattdessen, aber nicht sicher, warum ich add over in meiner Situation ersetzen würde – Pangu