在我的 Android 项目中,我有一个使用 Master-Detail 视图的 Activity,它由两个片段创建。不过,我的 detailfragment 给了我一些“问题”。
它由 50 多个控件(TextViews、EditTexts、CheckBoxes、Spinner)组成。在这 50 多个控件中,我以编程方式在我的详细片段中获取了对其中 32 个控件的引用,并从我的 SQLite 数据库中加载它们的数据。
当我运行它并使用初始化我的控件时
(SomeControl).findViewById(R.id.mycontrol);
LogCat 不断警告我,我可能在主线程上做的太多了。
我知道 findViewById 和膨胀视图是一项昂贵的操作,所以我有了一个想法!
我想知道是否有某种方法可以在我的细节片段上使用视图模式或视图回收,就像我在 ListFragment 上所做的那样。这样我就可以避免每次在我的 ListView 中选择另一个项目时重新初始化我的 detailview。并避免像我一样调用 .findViewById 。有没有人知道如何实现这样的事情。如果我在 detailsfragment 的 onCreate 方法中对控件进行了初始化,会有什么不同吗?我还在考虑让我的 detailsfragment 成为“单例”,然后在我的 listfragment 的选择发生变化时使用 getLoaderManager().restartLoader。对所有这一切的任何想法将不胜感激。