我有一个settingsactivity,我有一个带密码字段的edittext。 我只包含4个数字和数字。
如果用户点击此内容,我是否可以在输入新密码之前强制用户确认旧密码?
的活动:
addPreferencesFromResource( R.xml.pref_general );
RES / XML / pref_general.xml
<PreferenceCategory android:title="@string/settings_general">
<EditTextPreference
android:title="@string/settings_password"
android:key="example_password"
android:summary="****"
android:textColor="@color/textColor"
android:textColorHint="@color/hintColor"
android:inputType="number"
android:maxLength="4"
/>
</PreferenceCategory>
如何找到这些项目以便我可以将自己的onClickListener放在它们上面?
编辑:我发现了这种方法,目前正试图解决这个问题..
private static Preference.OnPreferenceClickListener onPreferenceClickListener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick( Preference preference ) {
return false;
}
};
答案 0 :(得分:0)
您可以在PreferenceActivity中注册一个监听器:
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@Override
public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) {
Log.i("onSharedPreferenceChanged", "preference changed: " + key);
}
答案 1 :(得分:0)
我从另一个问题中注意到了这一点,再多搜索一下。
Preference myPref = ( Preference ) findPreference( "password" );
myPref.setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick( Preference preference ) {
Log.e("App", "password clicked!");
return true;
}
} );
作品!
编辑:这可能必须在onPostCreate()方法中,因为它需要初始化,然后才能设置任何类型的侦听器(甚至找到对象)。