我正在使用下面的代码将文本打印到logcat,但setOnPreferenceClickListener
函数没有捕获事件。
我正在使用Android API Level 8来测试代码。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:defaultValue="true"
android:key="settings_use_cache"
android:summary="Use cache"
android:title="Use Cache" />
<Preference
android:defaultValue="true"
android:key="settings_delete_cache"
android:summary="Delete all cache data"
android:title="Clear Cache" />
</PreferenceScreen>
这是代码
public static class CachePreferenceFragment extends
PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.w("DBG", "Oncreate started");
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_cache);
Preference settings_delete_cache=findPreference("settings_delete_cache");
settings_delete_cache.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Log.w("Prefence", "Deleting Cache");
return false;
}
});
}
}
我可以做些什么来确保听众捕获事件?
答案 0 :(得分:1)
编辑: 在与线程之外的这个开发者交谈之后,发现问题在于他将他的监听器放在片段内。所以这段代码实际上有效,但只有在使用双面板布局时才能运行。事实上,这是在方法的正上方说明的:
/**
* This fragment shows notification preferences only. It is used when the
* activity is showing a two-pane settings UI.
*/
public static class CachePreferenceFragment extends
PreferenceActivity {
解决方案是在setupSimplePreferencesScreen()中设置onPreferenceClick侦听器!