2011-09-01 37 views
4

我想创建一个包含对象的数据的ArrayList(就像地址和属性列表一样(非常复杂)),我在想:如何让一个对象可访问(以及可编辑)由所有活动,而不仅仅是一个它instanciated?在Android中创建一个可被所有Activites访问的对象

基本上这:

  1. 创建活动2阵列中的活动1次
  2. 访问同一阵列和3
  3. ???
  4. 利润。

回答

11

最简单的方法做,这是通过创建一个单身访问类的实例。这是一种只能创建一次的对象,如果您尝试再次访问它,它将返回对象的现有实例。 在里面你可以容纳你的数组。

public class Singleton { 
    private static final Singleton instance = new Singleton(); 

    // Private constructor prevents instantiation from other classes 
    private Singleton() { 
    } 

    public static Singleton getInstance() { 
     return instance; 
    } 

} 

了解更多关于单: http://en.wikipedia.org/wiki/Singleton_pattern

+0

感谢您的回答!这也是最有效的方式吗?单源有效的资源是多少? –

+3

Singleton的坏处:由于没有对象的实际所有者,garbagecollector永远不会将其从内存中移除,所以只要应用程序处于活动状态(直到onDestroy),它就会占用该内存。但是,我们也可以认为你不必一直创建新的对象,这使你更快的速度和更少的内存使用。 – Nic

0

你应该让静态和任何其他活动访问.....

6

您可以扩展应用程序类。并在那里添加你的数组。

您可以使用此命令

MyApplication appContext = (MyApplication)getApplicationContext(); 
2

那么你可以创建一个常量类,并声明您ArrayList的一个静态变量。

1)

Class ConstantCodes{ 

     public static ArrayList<MyClass> list = new ArrayList<MyClass>; 
    } 

来自世界各地要按只是ConstantCodes.list

2.这将是访问),您可以通过应用程序类这样

class Globalclass extends Application { 

    private String myState; 

    public String getState(){ 
    return myState; 
    } 
    public void setState(String s){ 
    myState = s; 
    } 
} 

class TempActivity extends Activity { 

    @Override 
    public void onCreate(Bundle b){ 
    ... 
    MyApp appState = ((MyApp)getApplicationContext()); 
    String state = appState.getState(); 
    ... 
    } 
} 
0

如何扩展您的类关于使用静态关键字?

public static SomeClass someObject

在活动类

该启动对对象

-1

1-在您的活性1,声明阵列中公共静态

public static ArrayList<HashMap<String, String>> myArray = new ArrayList<HashMap<String, String>>(); 

2-在你活性2活动3访问您的ArrayList

Activity1.myArray 
相关问题