Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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 Android开发:从主活动访问对象(在应用程序类中定义)的LinkedList_Java_Android_Object_Linked List - Fatal编程技术网

Java Android开发:从主活动访问对象(在应用程序类中定义)的LinkedList

Java Android开发:从主活动访问对象(在应用程序类中定义)的LinkedList,java,android,object,linked-list,Java,Android,Object,Linked List,从前面的一个线程开始,我想知道如何创建LinkedList,并使它们在多个活动中保持持久性。有人建议我扩展应用程序类来实现这一点,因此我决定对此进行研究 我已经这样做了,假设我没有把它搞得一团糟,应用程序现在应该在linkedlist中填入一些我希望在主要活动中使用的示例数据。但我似乎无法访问数据,我有点困惑 刚刚开始android开发,如果这是一个荒谬的问题,那么很抱歉。不管怎样,这就是我到目前为止所拥有的 扩展类GlobalData package com.example.employeeL

从前面的一个线程开始,我想知道如何创建LinkedList,并使它们在多个活动中保持持久性。有人建议我扩展应用程序类来实现这一点,因此我决定对此进行研究

我已经这样做了,假设我没有把它搞得一团糟,应用程序现在应该在linkedlist中填入一些我希望在主要活动中使用的示例数据。但我似乎无法访问数据,我有点困惑

刚刚开始android开发,如果这是一个荒谬的问题,那么很抱歉。不管怎样,这就是我到目前为止所拥有的

扩展类GlobalData

package com.example.employeeList;

import java.util.LinkedList;
import android.app.Application;
import android.widget.Toast;

import com.example.employeeList.Employee;

 public class GlobalData extends Application {

 public LinkedList<Employee> EmployeeList;

 @Override
 public void onCreate(){
    super.onCreate();
    createEmployeeLinkedList();
 }

  public void createEmployeeLinkedList(){
    // create a linked list
    Employee emp1 = new Employee("John");
    Employee emp2 = new Employee("Bob");
    Employee emp3 = new Employee("Fred");

    LinkedList<Employee> EmployeeList = new LinkedList<Employee>();
    EmployeeList.add(emp1);
    EmployeeList.add(emp2);
    EmployeeList.add(emp3);

     // The following code works, used for testing to see if linklist was actually being created.
     // Employee boo = newEmployee();
     // Employee boo = EmployeeList.getFirst(); 
     // Toast.makeText(getApplicationContext(), "("+boo.name+")" ,Toast.LENGTH_LONG).show();
 }

 }
主要活动课程

package com.example.employeeList;

import android.app.Application;

 public class Employee extends Application{

  public String name;

  public Employee(String name) {
     this.name = name;
  }
}
package com.example.employeeList;

import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
import android.widget.Toast;
import com.example.employeeList.Employee;

public class MainActivity extends Activity {

protected GlobalData globalData;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Get the application instance
    globalData = (GlobalData)getApplication();

    //Would have thought I could just do this but apparently not.
    Employee boo = globalData.EmployeeList.getFirst();
    Toast.makeText(getApplicationContext(), "("+boo.name+")" ,Toast.LENGTH_LONG).show();

 }
}
令人不快的台词似乎是

 Employee boo = globalData.EmployeeList.getFirst();
 Toast.makeText(getApplicationContext(), "("+boo.name+")" ,Toast.LENGTH_LONG).show();

有什么想法吗?

我想你应该看看包裹

另一篇帖子提到了这一点


例如。

尝试从应用程序类将GlobalData设置为单例,并在GlobalData类中添加如下内容:

    private static GlobalData singleton;

public static GlobalData getInstance() {
    return singleton;
}
GlobalData.EmployeeList.get(0)
这样,您就不需要Employee类来扩展应用程序,它只是一个数据模型类。 然后,在所有应用程序生命周期中,您将有一个GlobalData类的实例(只有一个实例),因此您可以调用应用程序中的每个活动/类/等,例如:

    private static GlobalData singleton;

public static GlobalData getInstance() {
    return singleton;
}
GlobalData.EmployeeList.get(0)
或者像那样简单的东西

请注意,当应用程序启动时,您的GlobalData类将被实例化,在OnCreate方法中,您将创建列表,并且它将在应用程序执行的所有时间都处于“活动”状态。您也可以在类中使用应用程序类中的OnPause和OnResume方法与应用程序状态更改进行交互


希望它能有所帮助。

我对单身汉的技术不是已经做到了吗?我曾想过取消Employee的单独类,只是在GlobalData类中使用一些方法来实现。是和否,我不知道您想要实现什么,只需根据示例(包括名称)给出一个我认为您想要的工作示例。我的观点是,您不需要这样做:
globalData=(globalData)getApplication()只需在应用程序中直接使用类,它的实例存在于整个应用程序中,我的意思是,使用我放在那里的代码,您可以直接执行
GlobalData.EmployeeList.getFirst()在您需要的每个地方