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