Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问其他java类的片段_Java_Android_Class_Android Fragments_Communication - Fatal编程技术网

访问其他java类的片段

访问其他java类的片段,java,android,class,android-fragments,communication,Java,Android,Class,Android Fragments,Communication,我一直在网上搜索,但没有找到我需要的正确答案。我是Android新手,请提供详细答案 我有一个片段,它从用户那里获取一些数据,例如:姓名、职业等。每次我获取数据时,我都希望使用GSON来存储它以共享数据引用。基于这些搜索,我需要构造一个常规Java用户类并传递对象() 所以我的问题是,片段可以访问其他常规java类函数吗 class UserFragment extends Fragment { // get the data from editText User newUser = new

我一直在网上搜索,但没有找到我需要的正确答案。我是Android新手,请提供详细答案

我有一个片段,它从用户那里获取一些数据,例如:姓名、职业等。每次我获取数据时,我都希望使用GSON来存储它以共享数据引用。基于这些搜索,我需要构造一个常规Java用户类并传递对象()

  • 所以我的问题是,片段可以访问其他常规java类函数吗

    class UserFragment extends Fragment {
    
    // get the data from editText
    
    User newUser = new User("Tom");
    newUser.setOccupation("Programmer");
    
    //etc
    
    }
    
  • 片段能否实例化一个类并设置变量

  • 如果1和2是,我们在哪里添加用户类java文件,与另一个文件夹的片段实现相同的文件,然后包括它
  • 我只是提供了一个用户作为例子,但一般来说,我想知道1和2的答案

    谢谢

  • 是的,片段对象可以实例化另一个类对象
  • 是的,它还可以设置变量并调用该对象上的函数
  • 完全由你决定。如果该类很小,并且对于fragment类来说非常局部,那么可以在fragment类内部创建它。如果您想在其他地方访问它,或者使它更模块化,您可以使用不同的包名或相同的包名创建它
  • 是的,片段对象可以实例化另一个类对象
  • 是的,它还可以设置变量并调用该对象上的函数
  • 完全由你决定。如果该类很小,并且对于fragment类来说非常局部,那么可以在fragment类内部创建它。如果您想在其他地方访问它,或者使它更模块化,您可以使用不同的包名或相同的包名创建它
    您好,下面是您的问题的解决方案和说明。首先,我想澄清,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;
    }
    }
    
  • 是的,如果您有一个类的引用,那么片段可以实例化一个类并设置变量

  • 好的,现在是主要部分。您可以从生命周期方法中的任何位置调用方法并实例化类。但我建议在onCreate()方法内实例化一个对象,或在其上实例化任何生命周期方法,如onAttach()。这是因为以下两点

    • 如果您不知道,通过调用new MyClass()创建对象会占用资源,而且对象创建过程也很耗时。因此,如果在onResume()或onStart()方法中调用这些对象,则当片段从可见状态移动到聚焦状态(调用前台-onResume())以及从后台移动到可见状态(调用onStart()时),将创建这些对象

    • 当另一个应用程序进入焦点时(当您的应用程序进入前台时,这会导致片段调用onResume()或onStart()),或者当我们的应用程序从后台移动到可见状态时(调用onStart()),通常会发生这种情况。所以每次发生这种情况时都会创建对象

    • 但另一方面,如果您在onCreate()或其上的lifecycle方法中创建它,则只有在片段被销毁并重新创建时,才会创建对象

    • 另外,如果您想从上面方法实例化的类中调用方法,您可以从onCreate()下面的任何生命周期方法中调用它,如onStart()(如果您想在用户使用片段之前显示结果)或onResume()(如果您想在用户看到结果之后显示结果),这取决于您自己

    • 同样在我上面的例子中,我从onStart()调用了retrieveData()方法,并从生命周期方法之外编写了该方法。这只是一个例子。你可以这样做。但是您必须根据需要在生命周期方法中调用这些方法

    • 最后,这里有一个链接,可以了解更多关于片段生命周期方法的信息


  • 我希望这能帮助你找到解决办法。谢谢。

    您好,下面是您问题的解答和澄清。首先,我想澄清,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;
    }
    }
    
  • 是的,如果您有一个类的引用,那么片段可以实例化一个类并设置变量

  • 好的,现在是主要部分。您可以从生命周期方法中的任何位置调用方法并实例化类。但我建议在onCreate()方法内实例化一个对象,或在其上实例化任何生命周期方法,如onAttach()。这是因为以下两点

    • 如果您不知道,通过调用new MyClass()创建对象会占用资源,而且对象创建过程也很耗时。因此,如果在onResume()或onStart()方法中调用这些对象,则当片段从可见状态移动到聚焦状态(调用前台-onResume())以及从后台移动到可见状态(调用onStart()时),将创建这些对象

    • 当另一个应用程序进入焦点时(当您的应用程序进入前台时,这会导致片段调用onResume()或onStart()),或者当我们的应用程序从后台移动到可见状态时(调用onStart()),通常会发生这种情况。所以每次发生这种情况时都会创建对象

    • 但另一方面,如果您在onCreate()或其上的lifecycle方法中创建它,则只有在片段被销毁并重新创建时,才会创建对象

    • 如果你