我要在第一个活动中创建一个名为“ AppEngine”的对象。这个AppEngine对象存储事件的arrayList和事件,并在其中包含2个事件。
在第一个活动中,单击一个按钮,将我带到第二个活动,在第二个活动中,我通过使用将事件对象添加到arrayList。
appEngine.getList.add(new Event)
在活动2中,如果我要呼叫appEngine.getList.size()
,则大小正确返回为3,我可以看到额外的事件。
当我切换回活动2时,我正在呼叫appEngine.getList.size()
,但它仅返回2,并且没有额外的事件。如何获取要更新的AppEngine对象?
答案 0 :(得分:0)
将数组列表保存为共享首选项,如下所示,创建一个AppPreference类:-
public class AppPreference {
private static SharedPreferences mPrefs;
private static SharedPreferences.Editor mPrefsEditor;
public static Set<AppEngine> getList(Context ctx) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
return mPrefs.getStringSet("AppEngineList", null);
}
public static void setList(Context ctx, ArrayList<AppEngine> value) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
mPrefsEditor = mPrefs.edit();
Set<String> set = new HashSet<>();
set.addAll(value);
mPrefsEditor.putStringSet("AppEngineList", set);
mPrefsEditor.commit();
}
}
像这样在第一次活动中设置您的价值:-
setList(YourActivity.class, list);
并从应用程序中的任何位置获取列表:-
ArrayLis<AppEngine> list = AppPreference.getList(yourActivity.class);
答案 1 :(得分:0)
如果您只希望appEnginge对象在单个应用会话中持续存在,而不希望在整个应用关闭/重新启动过程中持续存在,则应使用处理程序类。
EngineHandler.java:
public static class engineHandler {
public static appEnginge _appEngine;
}
然后致电
engineHandler._appEngine = _myAppengine;
engineHandler._appEngine.getList().add(new Event);
您的活动中。您可以通过应用程序中的任何活动访问engineHandler。
答案 2 :(得分:0)
最好将每个Activity完全独立地执行。从技术上讲,这是有争议的,但是设计更干净,更安全的软件是一个很好的假设。
基于假设,有几种方法可以在应用程序的“活动”中维护数据。
每种方法都有类似的方式;应该有一个隔离的独立存储,该存储不属于Activity之一,而是属于ApplicationContext或其基础操作系统。
答案 3 :(得分:0)
您可以使用 Singleton 设计模式。
您可以从带有事件列表字段的 AppEnginRepository 创建一个对象,然后在您的应用中获取它,并且每次您想要更改
public class AppEnginRepository {
private List<Event> eventList;
private static final AppEnginRepository ourInstance = new AppEnginRepository();
public static AppEnginRepository getInstance() {
return ourInstance;
}
private AppEnginRepository() {
eventList = new ArrayList<>();
}
public List<Event> getEventList() {
return eventList;
}
public void setEventList(List<Event> eventList) {
this.eventList = eventList;
}
}
在您的活动中
AppEnginRepository enginRepository=AppEnginRepository.getInstance();
List<Event> eventList=enginRepository.getEventList();
eventList.add(new Event());
int eventListSize=eventList.size();