Java 作为全局变量的ArrayList

Java 作为全局变量的ArrayList,java,android,Java,Android,我创建了这样扩展应用程序的类 package com.appnetics; import java.util.ArrayList; import android.app.Application; public class GlobalVariables extends Application { public ArrayList<Encounter> encounters; } GlobalVariables appState = new GlobalVa

我创建了这样扩展应用程序的类

package com.appnetics;

import java.util.ArrayList;

import android.app.Application;

public class GlobalVariables extends Application {

    public ArrayList<Encounter> encounters;

}
    GlobalVariables appState = new GlobalVariables();

    Encounter EncounterObject = appState.encounters.get(position);
是否缺少一些内容,请,如何修复它是
全局变量类的一个实例变量,因此每次创建
全局变量的新实例时,您都会得到一个单独的变量


如果您真的想要一个全局变量,那么它应该是一个静态变量——但即使是这样,也只有在同一流程中的活动之间共享数据时才会起作用。您应该阅读以了解更多信息。

我将在这里使用单例模式

你可以做单身汉([http://en.wikipedia.org/wiki/Singleton_pattern])类,该类提供对象的一个实例。并在此类中创建ArrayList veriable。并且,您可以在需要的地方访问此arraylist。 例如,singleton类:

public class Singleton {

private ArrayList<Object> arrayList;

private static Singleton instance;

private Singleton(){
    arrayList = new ArrayList<Object>();
}

public static Singleton getInstance(){
    if (instance == null){
        instance = new Singleton();
    }
    return instance;
}

public ArrayList<Object> getArrayList() {
    return arrayList;
}
}

您每次都通过调用构造函数来创建一个新的应用程序对象,而应该通过方法getApplication()获取应用程序引用。因此,您应该编辑代码以:

GlobalVariables appState = (GlobalVariables) getApplication();
appState.encounters =new ArrayList<Encounter>(); 
................
then add 

您每次都在创建一个新的GlobalVariabels实例。因此,当您试图获取列表时,get(position)将为null OK,但我需要在类extend from extends AsyncTask how to getApplication()中调用它,将其调用到类Extending AsyncTask中,您需要将应用程序或活动引用传递到AsyncTask。哪个调用AsyncTask是从片段扩展的,所以我只有上下文
public class GlobalVariables {
  public ArrayList<Encounter> encounters;

  private GlobalVariables() {
    encounters = new ArrayList<Encounter>();
  }

  private static GlobalVariables instance;

  public static GlobalVariables getInstance() {
    if (instance == null) instance = new GlobalVariables();
    return instance;
  }
}
GlobalVariables.getInstance().encounters.get(position);
public class Singleton {

private ArrayList<Object> arrayList;

private static Singleton instance;

private Singleton(){
    arrayList = new ArrayList<Object>();
}

public static Singleton getInstance(){
    if (instance == null){
        instance = new Singleton();
    }
    return instance;
}

public ArrayList<Object> getArrayList() {
    return arrayList;
}
}
public class MyActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Singleton.getInstance().getArrayList();
}
}
GlobalVariables appState = (GlobalVariables) getApplication();
appState.encounters =new ArrayList<Encounter>(); 
................
then add 
GlobalVariables appState = (GlobalVariables) getApplication();

Encounter EncounterObject = appState.encounters.get(position);