一个奇怪的行为我从今天下午早些时候就开始睁大眼睛,我正在理解,但也许有人有一个想法(是的,我是初学者,有些人有想法^^)。
情况:
MainActivity.java(第一个被调用,只有一个感兴趣的人)
public ExpandableListView listClubs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listClubs = (ExpandableListView) findViewById(R.id.expLstMainClubs);
AppGlobal.CreateDistricts() ;
ELVAdapterDistrictsClubs adapter = new ELVAdapterDistrictsClubs(this);
listClubs.setAdapter(adapter);
}
这是班上唯一的代码。基本上,我正在使用适配器填充ExpandableList,该适配器依赖于CreateDistricts()方法中创建的内容(创建业务对象,包含包含成员,事件等的俱乐部的区域)。
基本上(再次^^),一切运行正常,首先启动ExpList按预期工作,以及应用程序的其余部分。但是,如果我从MainActivity点击后退按钮,并重新运行应用程序,则会出现“奇怪的”(至少对我来说)行为:
ExpList连续两次加载 - 第一个加载数据,工作正常,只是复制下面(具有相同的2个组,即这里是我的示例数据中仅有的两个区域),这不起作用完全(如果你试图扩展它,它会崩溃应用程序)。
坦率地说,我迷路了 - 我已经尝试了各种各样的事情[暂停/停止/摧毁/开始/恢复]等无济于事(因此,这方面还没有做任何事情,没有覆盖,因为它似乎没有带来任何好处。)由于onCreate将在onDestroy加载包之后,它应该按原样加载ExpList,在这种情况下,“旧”组/子组与实际组之间可能存在冲突(当前,模拟数据) ,但之后将来自远程数据源),我还没有决定最好的“保存”行为是什么,即我是否应该找到一种方法来消除ExpList onDestroy,以确保它100%重新创建(以及如何做到这一点?)并从头开始,或者如果我可以按原样使用ExpList,同时更新它的内容,以免丢失先前的选择。为了做到这一点,使问题复杂化可能无关紧要,第一个清单并不是那么大而且很快就用来达到第二个活动......
无论如何,我怀疑它来自那个部分,破坏和重新运行后的bundle加载,它是否按原样重新加载ExpList然后我添加东西而不是先删除?我发现令人困惑的是,下一个活动(仅通过单击ExpList中的一个项目到达)显示类似的ExpList(填充了所选俱乐部的每月月数和事件数),并且在之后不会出现相同的奇怪行为一个破坏...并且两者在原始的xml布局中都有一个几乎相同的ExpList声明,所以......好吧,也许明天早上我会看到光,但如果有人有想法,请随意:D
我写的越多,我认为我应该首先清除ExpList,但是......我不知道究竟是怎么回事。我试过了
listClubs.removeViewsInLayout(0, listClubs.getCount()) ;
但它似乎没有做任何事情。
提前致谢
答案 0 :(得分:0)
没有任何与Android行为有关的东西 - 如果区的基础ArrayList不是null,我正在重新创建每次整个BO集合...而不是简单地退出方法,但它引发了另一个问题 - 这个ArrayList的状态是如何在我的清单中作为Application的子类申请的?我将不得不对此进行一些测试...