如何以编程方式将片段替换为Internet连接?

时间:2018-07-23 11:37:55

标签: android android-fragments

我正在尝试做我认为简单的任务:实现一个片段,该片段根据互联网的可用性显示不同的视图。 明确说明:尝试在没有连接的情况下启动youtube应用,您会看到一个漂亮的错误屏幕,并带有“重试”按钮。当您单击按钮时,(只是视图或其他内容的)片段会重新加载,并且如果现在可以使用互联网,则显示正确的项目。 我在ViewPager中有两个片段。一个片段具有recyclerview,它从firebase中检索数据。我希望第一个片段显示错误消息和“重试”按钮。按下按钮时,就像youtube应用程序一样,如果网络可用,我想重新加载片段的内容并显示正确的内容。 我不知道该怎么办。enter image description here 请帮忙!

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;
}

}

2 个答案:

答案 0 :(得分:1)

与在网络上更改replacing fragments而不是在create a view上进行的更改相同,只需将其添加到具有recyclerView的片段即可。而在网络上,只需show or hide更改此视图即可。

答案 1 :(得分:1)

Youtube 使用retry之类的单独视图,如果无法访问互联网,则会隐藏recylerview。另一方面,如果设备中可以使用互联网,则它会隐藏重试视图,然后加载recyclervbiew并使用 Swiprefresh 视图自动加载列表。当然,一切都在相同片段中发生,而不是像您所要求的那样在单独的片段中发生。假设retry TextView ,如果互联网不可用setVisibilty 可见。并且 Recyclerview setVisibility < strong>消失。如果互联网可用,则setVisibility的{​​{1}}的Textview将消失,而recyclerview的retry则是{strong>可见的。

setvisibility