我开始学习如何第一次构建Android TV,因此我对此问题的一个可能的明显答案表示歉意。基本上,我试图复制如何在Android TV YouTube应用时显示有如图所示没有互联网连接:在Android TV中为片段创建叠加层?
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
?这将允许我遵循结构并对其进行修改以符合我的要求。
感谢。
你的答案向我指出了正确的方向,我用'getFragmentManager()调用BeginTransaction()加(R.id.main_browse_fragment,internetError)。提交();'相反,但不知道为什么我会使用添加替换在我的情况 – Pangu