从android中的另一个片段访问活动的字符串类型的arraylist

时间:2014-08-17 09:25:31

标签: android android-activity android-fragments arraylist

我在一个活动中有一个字符串类型的arraylist。我需要从我的应用程序中的另一个片段访问这个arraylist。我该怎么做才能从任何片段中访问这个arraylist。请建议我一个解决方案。我不知道这样做的程序。有人可以帮帮我..

3 个答案:

答案 0 :(得分:1)

如果您的ArrayList是静态的,您可以将它作为参数传递给Fragment实例。

在您的活动中:

Bundle b=new Bundle();
b.putStringArrayList('myarraylist',myarraylist)
MyFragment f=MyFragment.newInstance(b);

在你的MyFragment课程中:

public MyFragment newInstance(b){
    MyFragment myfragment=new MyFragment();
    myFramgent.setArguments(b);
    return myFragment;
}

如果它是一个动态ArrayList,一个选项是在Activity中获取对片段的引用,并在每次更改时调用set方法(在片段或公共接口中定义)以传入数据

答案 1 :(得分:0)

将数据存储在Android中的Activity中是一个坏主意。活动可能会被破坏,而像ArrayLists这样的本地数据可能无法访问。这就是您需要将信息存储在其他地方的原因。最常见的地方是数据库或偏好。

查看此页面,他们建议使用数据存储选项:

http://developer.android.com/guide/topics/data/data-storage.html

答案 2 :(得分:0)

使用此方法存储您的arraylist:

 public static boolean saveArray() {  
         SharedPrefernces sp=SharedPrefernces.getDefaultSharedPrefernces(this);  
         SharedPrefernces.Editor mEdit1= sp.edit();  
         mEdit1.putInt("Status_size",sKey.size()); /*sKey is an array*/   

        for(int i=0;i<sKey.size();i++) {  
            mEdit1.remove("Status_" + i);  
            mEdit1.putString("Status_" + i, sKey.get(i));    
        }  

        return mEdit1.commit();       
    }  

使用此方法检索

public static void loadArray(Context mContext) {    
    Shared Preferences mSharedPreference1=PreferenceManager.getDefaultSharedPreferences(mContext);  
    sKey.clear();  
    int size = mSharedPreference1.getInt("Status_size", 0);    

    for(int i=0;i<size;i++) {  
        sKey.add(mSharedPreference1.getString("Status_" + i, null));    

    }  
}