每次我的片段成为可见的我要执行的代码的和平,将调用Web服务,获取一些数据,并在屏幕上显示它的用户。我得到了Web服务部分等工作,但在什么情况下我必须添加我的代码不知道....我想:片段变得可见
- 在onStart
- 的onResume
- onAttach
但我的代码每次都不会启动。
正在使用与SherlockFragment Android的V4补偿LIB作为我的基类。
每次我的片段成为可见的我要执行的代码的和平,将调用Web服务,获取一些数据,并在屏幕上显示它的用户。我得到了Web服务部分等工作,但在什么情况下我必须添加我的代码不知道....我想:片段变得可见
但我的代码每次都不会启动。
正在使用与SherlockFragment Android的V4补偿LIB作为我的基类。
onResume()
被称为每次你的片段变得对用户可见的时间。还有别的东西你的代码错误,如果它不
onCreateView()
被称为第一时间片段需要借鉴它的UI
更新:该接受的答案是工作5年前 - 它不”牛逼了
你应该看看Fragement文档,这与活动有很大的区别http: //developer.android.com/guide/components/fragments.html。 – mba
答案是错的。据我所知:我有一个FragmentActivity,并在该活动中使用ViewPager。 ViewPager包含4个片段。每当我的应用程序启动(只有第一个片段可见)时,第一个和第二个Fragements的两个方法:onCreateView()和onResume()被调用! – hungson175
这不完全是我说的吗? onResume总是被称为 - 也是当应用程序开始(第一次)以及onCreateView – Lieuwe
onCreateView()
调用当您更改片段以及新片段变得可见每次..
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
看看,让我知道,发生什么事了许多不同的方式? – user370305
嗯,我坚持了这个问题,并试图但这一个是解决当片段变得可见再次 –
不工作 - !它只有当你的交易有两个片段与片段的片段新创建的名为 – keybee
您可以使用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) { }
else { }
}
看一看this
这是API 15及以上:(当boo – RobP
不起作用时,你推后面的按钮与嵌套片段 – splinter123
这可能很老,但我发现setUserVisibleHint()不适用于我的许多用例。相反,我不得不使用ViewTreeObserver进行破解。
基本上,你的片段被初始化后,你在其中一个视图,并做到以下几点:
myViewInFragment.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
myMethodWhenFragmentFirstBecomesVisible();
myViewInFragment.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
以下方法被用于确定何时片段成为用户的正面可见。
private boolean loding= false; // your boolean flage
@Override
public void setUserVisibleHint(boolean isFragmentVisible) {
super.setUserVisibleHint(true);
if (this.isVisible()) {
// we check that the fragment is becoming visible first time or not
if (isFragmentVisible && !loding) {
//Task to doing while displaying fragment in front of user
loding = true;
}
}}
这里
同样的问题。文档说onCreateView()之后onResume被调用一次。在将片段添加到FragmentManager()时,似乎没有片段上的事件。我不知道该怎么做。我想,我们必须使用FragmentManager.OnBackStackChangedListener()但从Frament点,没有问题:( – mba