嗨,下面是您问题的解决方案和澄清。首先,我想明确Fragment是一个具有生命周期方法的类。所谓生命周期方法,我指的是根据应用程序或活动的生命周期调用方法,比如在前台、可见和后台调用方法。以下是您问题的答案。
-
如果您有对类的引用,则可以从类中访问常规方法。
public class YourFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyClass class = new MyClass();
}
@Override
public void onStart() {
super.onStart();
String data = retrieveData();
}
String retrieveData() {
return data;
}
}
-
是的,如果您引用了一个类,Fragment可以实例化一个类并设置变量。
-
好了,现在是主要部分。您可以从生命周期方法内的任何位置调用方法并实例化类。但我建议在onCreate()方法中实例化一个对象,或者在它上面的任何生命周期方法,如onAttach()。这是因为以下两点。
-
如果您没有意识到,通过调用newMyClass()创建对象会占用资源,而且对象创建过程也很耗时。因此,如果在onResume()或onStart()方法中调用它们,那么当片段从可见状态移动到聚焦状态(调用前台-onResume)以及从后台移动到可见状态(调用onStart)时,将创建这些对象。
-
当另一个应用程序进入焦点时(当您的应用程序进入前台时,这会导致片段调用onResume()或onStart())),或者当我们的应用程序从后台移动到可见状态时(调用onStart)),通常会发生这种情况。所以每次发生这种情况时都会创建对象。
-
但另一方面,如果您在onCreate()或其上面的生命周期方法中创建它,则只有当片段被销毁并重新创建时,才会创建对象。
-
此外,如果您想从通过上述方法实例化的类中调用方法,您可以从onCreate()下面的任何生命周期方法中调用它,如onStart()(如果您想在用户使用您的片段之前显示结果)或onResume()中(如果您希望在用户看到之后显示结果),这取决于您自己。
-
同样在上面的例子中,我从onStart()调用了retrieveData()方法,并从生命周期方法之外编写了该方法。这只是一个例子。你可以这样做。但您必须根据需要调用生命周期方法中的那些方法。
-
最后,这里有一个链接来了解更多关于片段的生命周期方法。
Learn About Fragment LifeCycle
我希望这能帮助你找到解决方案。非常感谢。