如何用互联网连接以编程方式替换碎片



我正在尝试做我认为简单的任务:实现一个片段,根据互联网可用性显示不同的视图。需要明确的是:尝试在没有连接的情况下启动youtube应用程序,你会看到一个带有"重试"按钮的漂亮错误屏幕。当你点击按钮时,(只有视图或其他内容的(片段会重新加载,如果现在可以使用互联网,则会显示正确的项目。我在ViewPager中有两个片段。其中一个片段已经回收,它从firebase中检索数据。我希望第一个片段显示一条错误消息和一个"重试"按钮。当按下按钮时,就像youtube应用程序一样,如果网络可用,我想重新加载片段的内容并显示正确的内容。我不知道该怎么做。在此处输入图像描述请帮忙!

Fragment_1.java

public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle b)
{
View view=inflater.inflate(R.layout.fragment_home,group,false);
recyclerView=(RecyclerView)view.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
myref= FirebaseDatabase.getInstance().getReference().child("/Blog");
FirebaseRecyclerAdapter<Blog,BlogViewHolder> recyclerAdapter=new FirebaseRecyclerAdapter<Blog,BlogViewHolder>(
Blog.class,
R.layout.individual_row,
BlogViewHolder.class,
myref
) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
viewHolder.setTitle(model.getTitle());
viewHolder.setDescription(model.getDescription());
viewHolder.setImage(model.getImage());
}
};
recyclerView.setAdapter(recyclerAdapter);
return view;
}

}

网络上的replacing fragments改为create a view,与您提供的屏幕相同,添加了具有recyclerView的片段。而在网络变化上仅CCD_ 3这一观点。

Youtube使用类似retry的单独视图,如果internet不可用,则会隐藏recylerview。另一方面,如果设备中有互联网,则会隐藏Retry视图,然后加载recycervbiew,并使用Swiprefresh查看自动加载列表。当然,一切都发生在同一个片段中,而不是像你所问的那样发生在单独的片段中。假设retryTextView,如果互联网不可用,则setVisibiltyVisible。并且RecyclerviewsetVisibilityGONE。如果互联网可用,则retry文本视图的setVisibilityGONE,而再循环视图的setvisibility可见

if(internet){
getDataFromserver();
tvRetryView.setVisibilty(GONE);
recylerview.setVisibility(VISIBLE);
}else{
tvRetryView.setVisibilty(VISIBLE);
recylerview.setVisibility(GONE);
}

最新更新