0

これに非常によく似た質問がたくさんあることは知っていますが、どれもうまくいかなかったようです。チェックボックスをオンにすると、パスワードが表示されるようになります。チェックを外すと、実際の文字ではなくドットが必要になります。今のところ、ドットしかありません。

次の nullpointerexception が発生しています。

07-08 15:08:50.441: E/AndroidRuntime(4518): FATAL EXCEPTION: main
07-08 15:08:50.441: E/AndroidRuntime(4518): java.lang.NullPointerException
07-08 15:08:50.441: E/AndroidRuntime(4518):     at com.passwordkeeper.ui.ActivityPreferenceScreen$1.onPreferenceClick(ActivityPreferenceScreen.java:65)
07-08 15:08:50.441: E/AndroidRuntime(4518):     at android.preference.Preference.performClick(Preference.java:951)
07-08 15:08:50.441: E/AndroidRuntime(4518):     at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215)

これは私のコードです:

@SuppressWarnings("deprecation")
public void setFields(){
    mPasswordField = (EditText) findViewById (R.id.loginPwdEditText);
    showPwd = (CheckBoxPreference) findPreference("checkBox");
    showPwd.setOnPreferenceClickListener(new OnPreferenceClickListener() {
        public boolean onPreferenceClick(Preference preference) {
            if(showPwd.isChecked()){        
                Log.v("showpwd", "apparently its checked");
                mPasswordField.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }
            else{
                Log.v("showpwd", "apparently its not checked now");
                mPasswordField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
                    }

            return true;
        }
    });

ログは機能しています。したがって、ボックスをチェックすると、実際には「明らかにチェックされている」と印刷されます。しかし、その後スタックし、null ポインター例外によってアプリがシャットダウンされます。

どんな助けでも役に立ちます!

4

5 に答える 5

0

このコードは間違っています:

mPasswordField.setInputType(129);
mPasswordField.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);

2 番目のセットは最初のセットを上書きします。フラグは OR する必要があります:

mPasswordField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );

NPEに関しては、おそらく次で終わります

mPasswordField

nullあるため、例外です。

于 2013-07-08T09:52:50.033 に答える
0

パスワードを表示するには:

 if(showPwd.isChecked()){
    if(mPasswordField!=null)
       pass.setInputType(InputType.TYPE_CLASS_TEXT);
}
else
    pass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
于 2013-07-08T09:53:15.670 に答える
0

動かしてみる

mPasswordField = (EditText) findViewById (R.id.loginPwdEditText); 

内部onPreferenceClick(Preference preference)メソッド

于 2013-07-08T09:54:06.353 に答える
0

こんにちは、チェック条件にこの1行のコードを入れてください-

btnCheckBox.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            editPsw.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
        }
    });
于 2013-07-08T09:57:40.350 に答える