简体   繁体   English

Android:SettingsActivity,确认密码?

[英]Android: SettingsActivity, confirm password?

I have a settingsactivity and I have a edittext with a passwordfield. 我具有settingsactivity,并且具有带密码字段的edittext。 I only contains 4 numbers and numbers only. 我只包含4个数字和仅数字。

How, when the user clicks this, can I make the user be forced to confirm the old password before entering a new one? 当用户单击此密码时,如何才能迫使用户在输入新密码之前确认旧密码?

Activity: 活动:

addPreferencesFromResource( R.xml.pref_general );

res/xml/pref_general.xml 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>

How can I find the items so that I can put my own onClickListener's on them? 如何找到这些项目,以便可以将自己的onClickListener放在这些项目上?

Edit: I found this method, currently trying to figure this out.. 编辑:我找到了这种方法,目前正在试图解决这个问题。

private static Preference.OnPreferenceClickListener onPreferenceClickListener = new Preference.OnPreferenceClickListener() {

    @Override
    public boolean onPreferenceClick( Preference preference ) {
        return false;
    }

};

You can register a listener within your PreferenceActivity: 您可以在您的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);
}

I noticed this from another question from searching a bit more. 我从搜索更多的另一个问题中注意到了这一点。

    Preference myPref = ( Preference ) findPreference( "password" );
    myPref.setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() {
        public boolean onPreferenceClick( Preference preference ) {
            Log.e("App", "password clicked!");
            return true;
        }
    } );

Works! 作品!

Edit: This would probably have to be in the onPostCreate() method because it needs to be initialized before you can set any sort of listeners to it (or even find the object). 编辑:这可能必须在onPostCreate()方法中,因为需要先对其进行初始化,然后才能对其设置任何侦听器(甚至找到对象)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM