片段访问其他 java class
Fragment accessing other java class
我一直在网上搜索,但找不到我需要的正确答案。我是Android的新手,所以请提供详细的答案。
我有一个片段,它从用户那里获取一些数据,例如:姓名、职业等。每次我获取数据时,我都想使用 GSON 将其存储到 sharedPreferences。根据搜索结果,我需要构造一个常规 Java 用户 class 并传递对象 ()。
所以我的问题是,片段可以访问其他常规 java class 函数吗?
class UserFragment extends Fragment {
// get the data from editText
User newUser = new User("Tom");
newUser.setOccupation("Programmer");
//etc
}
Fragment可以实例化一个class并设置变量吗?
- 如果 1 和 2 是,我们在哪里添加用户 class java 文件,与另一个文件夹的片段实现相同的文件,然后包含它?
我只是提供了一个用户作为示例,但一般来说我想知道 1 和 2 的答案。
谢谢
- 是的,片段对象可以实例化另一个 class 对象。
- 是的,它还可以在该对象上设置变量和调用函数。
- 完全取决于您。如果 class 很小并且非常局限于片段 class,您可以在片段 class 中创建它。如果您希望它可以在其他地方访问,或者使其更加模块化,您可以使用不同的包名或相同的包名创建它。
您好,以下是针对您的问题的解决方案和说明。首先,我想明确 Fragment 是一个带有生命周期方法的 class。通过生命周期方法,我的意思是根据应用程序或 activity 生命周期调用这些方法,就像它在前台、可见和后台时一样。以下是您问题的答案。
如果您有一个引用,您可以从 class 访问常规方法。
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;
}
}
是的,一个片段可以实例化一个 class 并设置变量,如果你有一个引用的话。
好的,现在是主要部分。您可以从生命周期方法内的任何位置调用方法并实例化 class。但我建议在 onCreate() 方法或其上方的任何生命周期方法(如 onAttach())中实例化一个对象。这是因为以下2点。
不知不觉,调用new MyClass()创建对象会占用资源,而且创建对象的过程也很耗时。因此,如果您在 onResume() 或 onStart() 方法中调用它们,则当片段从可见状态移动到聚焦状态(前景 - 调用 onResume() )以及从背景移动到可见状态(调用 onStart() )时,将创建这些对象.
当另一个应用程序进入焦点时(这会导致片段在您的应用程序进入前台时调用 onResume() 或 onStart())或当我们的应用程序从后台移动到可见状态时,经常会发生这种情况(调用 onStart())。所以每次发生这种情况都会创建对象。
但另一方面,如果您在 onCreate() 或上面的生命周期方法中创建它,则只有当片段被销毁并重新创建时才会创建对象。
此外,如果你想从 class 中调用你已经通过上述方法实例化的方法,你可以从 onCreate() 下面的任何生命周期方法中调用它,就像在 onStart() 中一样(如果你想在用户使用你的片段之前显示结果)或在 onResume() 中(如果你想在用户看到它之后显示结果)这取决于你。
另外,在我上面的示例中,我从 onStart() 调用了 retrieveData() 方法,并且我从生命周期方法之外编写了该方法。这只是一个例子。你可以那样做。但是您必须根据需要在生命周期方法中调用这些方法。
最后这里有一个link来了解更多关于Fragment的生命周期方法。 Learn About Fragment LifeCycle
我希望这能帮助您找到解决方案。谢谢。
我一直在网上搜索,但找不到我需要的正确答案。我是Android的新手,所以请提供详细的答案。
我有一个片段,它从用户那里获取一些数据,例如:姓名、职业等。每次我获取数据时,我都想使用 GSON 将其存储到 sharedPreferences。根据搜索结果,我需要构造一个常规 Java 用户 class 并传递对象 (
所以我的问题是,片段可以访问其他常规 java class 函数吗?
class UserFragment extends Fragment { // get the data from editText User newUser = new User("Tom"); newUser.setOccupation("Programmer"); //etc }
Fragment可以实例化一个class并设置变量吗?
- 如果 1 和 2 是,我们在哪里添加用户 class java 文件,与另一个文件夹的片段实现相同的文件,然后包含它?
我只是提供了一个用户作为示例,但一般来说我想知道 1 和 2 的答案。
谢谢
- 是的,片段对象可以实例化另一个 class 对象。
- 是的,它还可以在该对象上设置变量和调用函数。
- 完全取决于您。如果 class 很小并且非常局限于片段 class,您可以在片段 class 中创建它。如果您希望它可以在其他地方访问,或者使其更加模块化,您可以使用不同的包名或相同的包名创建它。
您好,以下是针对您的问题的解决方案和说明。首先,我想明确 Fragment 是一个带有生命周期方法的 class。通过生命周期方法,我的意思是根据应用程序或 activity 生命周期调用这些方法,就像它在前台、可见和后台时一样。以下是您问题的答案。
如果您有一个引用,您可以从 class 访问常规方法。
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; } }
是的,一个片段可以实例化一个 class 并设置变量,如果你有一个引用的话。
好的,现在是主要部分。您可以从生命周期方法内的任何位置调用方法并实例化 class。但我建议在 onCreate() 方法或其上方的任何生命周期方法(如 onAttach())中实例化一个对象。这是因为以下2点。
不知不觉,调用new MyClass()创建对象会占用资源,而且创建对象的过程也很耗时。因此,如果您在 onResume() 或 onStart() 方法中调用它们,则当片段从可见状态移动到聚焦状态(前景 - 调用 onResume() )以及从背景移动到可见状态(调用 onStart() )时,将创建这些对象.
当另一个应用程序进入焦点时(这会导致片段在您的应用程序进入前台时调用 onResume() 或 onStart())或当我们的应用程序从后台移动到可见状态时,经常会发生这种情况(调用 onStart())。所以每次发生这种情况都会创建对象。
但另一方面,如果您在 onCreate() 或上面的生命周期方法中创建它,则只有当片段被销毁并重新创建时才会创建对象。
此外,如果你想从 class 中调用你已经通过上述方法实例化的方法,你可以从 onCreate() 下面的任何生命周期方法中调用它,就像在 onStart() 中一样(如果你想在用户使用你的片段之前显示结果)或在 onResume() 中(如果你想在用户看到它之后显示结果)这取决于你。
另外,在我上面的示例中,我从 onStart() 调用了 retrieveData() 方法,并且我从生命周期方法之外编写了该方法。这只是一个例子。你可以那样做。但是您必须根据需要在生命周期方法中调用这些方法。
最后这里有一个link来了解更多关于Fragment的生命周期方法。 Learn About Fragment LifeCycle
我希望这能帮助您找到解决方案。谢谢。