2016-06-21 86 views
0

我以编程方式调用pull-to-refresh作为奇妙地解释here在我的片段onResume()中的一行内容。这是我的代码:调用Chris Banes以无编程方式刷新以编程方式刷新

private PullToRefreshScrollView panelScrollView; 

@Override 
public void onResume() { 
    panelScrollView.setRefreshing();    
    super.onResume(); 
} 

这将刷新我的片段,但有反弹(就像用户拉动和释放),这也是一个不好的用户体验。
我的问题:

  1. 我可以得到相同的刷新没有反弹
  2. 为什么片段的super.onResume()一旦到达前台就刷新片段?为什么我需要首先拨打PullToRefreshScrollView.setRefreshing()
+0

拉到刷新原生支持。你不需要第三方库。 [见此](https://developer.android.com/training/swipe/add-swipe-in​​terface.html) – Renjith

+1

使用SwipeRefreshLayout Senti。 –

+0

非常感谢!但这是与第三方拉到刷新集成的“遗留代码”,这种工作方式很有效,我首先想尝试与其他拉到刷新解决方案集成。 另外我还是不明白我的问题2,为什么'onResume()'没有我的显式调用没有刷新片段。 – Senti

回答

1

首先,我会建议使用支持拉刷新非常容易使用。 https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html

  1. 文档说以下

    如果活动希望只显示进度动画,它应该 呼叫setRefreshing(真)https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html#isRefreshing()

  2. 拉的目的刷新的是用户特别想要刷新数据。你试图做的是一种反模式。但是在理想的情况下,如果您实施拉动刷新,您不想在用户完成操作之前重新加载。这样用户就可以决定移动数据不刷新,而是连接到wifi时快速刷新。

作为在调用片段onResume时实现刷新的补充,您可以创建一个从Fragment扩展的新类。

public class AutoRefreshFragment extends Fragment { 
... 
    public void onResume() { 
      panelScrollView.setRefreshing(); 
    } 
... 
} 

,而是延伸定期片段使用extends AutoRefreshFragment刚创建的超类。

+0

感谢您的回复!请看我上面的评论。 – Senti

+0

感谢您的更新,但这是我在我的原始代码片段中所做的。或者我有什么不同? – Senti

+0

确实类似但没有超类。 – QVDev

相关问题