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