我的Android应用程序第一次启动时,我会调出一个首选项,因为用户最初需要从项目列表中进行选择,并且需要保存其选择。我扩展ListPreference以显示项目列表。
它的工作方式是用户从显示的列表中选择一个项目。这个选择 保存在SharedPreferences中,应用程序转换为另一个片段。所有这些都是 工作,但由于某种原因,ListPrefence第二次显示。
我已经进行了一些日志记录,并发现由于某种原因,两个ListPreference对象都是 正在建造......但我知道只有一个要求创造它。我在某种程度上错过了哪里/为什么 第二次调用ListPreference构造函数。
我的PreferenceFragment代码很简单。它看起来像
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("INIT", "ONCREATE");
addPreferencesFromResource(R.xml.inititems); // load from XML
只有addPreferencesFromResource()调用。我的片段代码中没有其他地方 应该(据我所知)导致ListPreference被实例化,但是 日志记录告诉我ListPreference构造函数被调用两次并且片段是 onCreate只调用一次。
我将尝试从ListPreference构造函数执行堆栈跟踪,但我想 看看这里是否有人有超出堆栈跟踪的想法或建议。为什么会这样 构造函数被调用两次?
谢谢! -mar
答案 0 :(得分:0)
您可能已经使用android:name =“ yourfragment ”以及在运行时在onCreate()中引用了布局资源文件中的片段。这将导致它被加载两次。