我正在使用Generic和数组,看起来下面的代码编译得很好,
ArrayList<Key> a = new ArrayList<Key>();
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨这个,
ArrayList<Key>[] a = new ArrayList<Key>[10];
Run Code Online (Sandbox Code Playgroud)
通过阅读stackoverflow中的帖子,我有点明白,这是由于类型擦除,我可以通过使用,修复它,
ArrayList<Key>[] a = (ArrayList<Key> []) new ArrayList[10];
Run Code Online (Sandbox Code Playgroud)
或列表清单
ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>();
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚幕后的原因.特别是,为什么第二个是非法的,因为第一个是非常好的.为什么编译器不会抱怨列表列表.
在我的活动中,我有几个全屏片段,每个片段都从网络下载一些数据(使用异步任务)并将其显示给用户。这些片段一次显示一个。
更具体地说,每个片段都会从 sqlite 数据库中读取一些 url,并在将内容显示在列表中之前获取内容(如果有的话)。数据加载任务可以在OnCreate()函数中完成。
当我显示启动屏幕时,我想预加载所有片段(至少开始下载)。非常类似于viewpager 预加载其片段。
我想知道如何实现这一目标?我尝试在 Activity 的 OnCreate() 函数中初始化/创建所有片段,希望可以更早地调用片段的 OnCreate() ,但是片段的 OnCreate() 和 OnCreateView() 函数只有在片段创建后才会被调用。即将展示给用户。