我开始学习如何首次构建Android TV,所以我为这个问题的明显答案道歉。基本上,我正在尝试复制Android TV Youtube应用程序在没有互联网连接时显示的内容:
YouTube在后面显示主要片段(我相信),没有视频,并且似乎有一个透明的叠加层,其中包含ImageView
,TextView
和Button
。一旦有互联网连接并且用户点击重试按钮,它就会加载视频内容并且叠加层消失。
我正在努力实现这种完全相同的技术,并且通过互联网连接,我目前有这个:
由于没有互联网连接,我想展示与YouTube相似的内容。
以下是我的一些基本代码:
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;
}
}
很简单,如果有互联网连接,我会从网上加载视频,否则,我会像YouTube一样通知用户。
我被困在哪里是在else语句中。我不确定在那里创建什么来实现这种叠加。
我在这里看了一些关于切换片段的解决方案:
但是,我不确定,为了我的目的,我是否需要这样做?
有人能指出我正确的方向吗?我不是希望有人像YouTube应用程序一样编写完整的代码,但我想要一个小样本,可能只有Button
或TextView
?这将允许我遵循结构并对其进行修改以满足我的要求。
感谢。
答案 0 :(得分:1)
您可以查看Leanback Sample app,其中包含BrowseErrorFragment的示例。
显示:
BrowseErrorFragment errorFragment = new BrowseErrorFragment();
getFragmentManager().beginTransaction().replace(R.id.main_frame, errorFragment)
.addToBackStack(null).commit();