Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法从EditText检索字符串_Android_String_Android Xml - Fatal编程技术网

Android 无法从EditText检索字符串

Android 无法从EditText检索字符串,android,string,android-xml,Android,String,Android Xml,我正在试图找出为什么我无法从两个文本中获取有效字符串 下面几行是我要说的 String newPin = etNewPassword.getText().toString(); String conPin = etConfirmPassword.getText().toString(); 下面是整个文件 public class PasswordDialogPreference extends DialogPreference { TextView tvOldPassword;

我正在试图找出为什么我无法从两个文本中获取有效字符串

下面几行是我要说的

String newPin = etNewPassword.getText().toString();
String conPin = etConfirmPassword.getText().toString();
下面是整个文件

public class PasswordDialogPreference extends DialogPreference {

    TextView tvOldPassword;
    TextView tvNewPassword;
    TextView tvConfirmPassword;

    EditText etOldPassword;
    EditText etNewPassword;
    EditText etConfirmPassword;

    SharedPreferences sharedPrefs;
    SharedPreferences.Editor editor;

    public PasswordDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);

        setDialogLayoutResource(R.layout.password_dialog_preference);
        setPositiveButtonText(android.R.string.ok);
        setNegativeButtonText(android.R.string.cancel);
        setDialogIcon(null);
        setPersistent(false);
    }

    @Override
    public void onBindDialogView(View view) {
        tvOldPassword = (TextView) view.findViewById(R.id.tvOldPassword);
        tvNewPassword = (TextView) view.findViewById(R.id.tvNewPassword);
        tvConfirmPassword = (TextView) view.findViewById(R.id.tvConfirmPassword);

        etOldPassword = (EditText) view.findViewById(R.id.etOldPassword);
        etNewPassword = (EditText) view.findViewById(R.id.etOldPassword);
        etConfirmPassword = (EditText) view.findViewById(R.id.etOldPassword);

        sharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(getContext());


        if (sharedPrefs.getString("prefPasscode", "").length() < 4) {
            tvOldPassword.setVisibility(View.GONE);
            etOldPassword.setVisibility(View.GONE);
        }
        super.onBindDialogView(view);
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);
        persistBoolean(positiveResult);
    }

    @Override
    protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
        super.onPrepareDialogBuilder(builder);
        //builder.setNegativeButton(null, null);
        builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                sharedPrefs = PreferenceManager
                        .getDefaultSharedPreferences(getContext());
                String oldPin;
                String newPin = etNewPassword.getText().toString();
                String conPin = etConfirmPassword.getText().toString();

                Log.d("pins", etNewPassword.getText().toString() +  " " + etConfirmPassword.getText().toString());

                if (newPin.equals(conPin)) {
                    //editor.putString("prefPasscode", etConfirmPassword.getText().toString());
                    //editor.commit();
                    Toast.makeText(getContext(), "Pin saved." + conPin,
                            Toast.LENGTH_SHORT
                    ).show();
                } else if (etNewPassword.getText().toString().length() !=  4) {
                    Toast.makeText(getContext(), "Pin must be 4 digits.",
                            Toast.LENGTH_SHORT
                    ).show();
                } else if (!etNewPassword.getText().toString().equals(etConfirmPassword.getText().toString())) {
                    Toast.makeText(getContext(), "Pin does not match.",
                            Toast.LENGTH_SHORT
                    ).show();
                }
            }
        });
    }

}
公共类PasswordDialogPreference扩展了DialogPreference{
TextView tvOldPassword;
text查看tvNewPassword;
文本视图tvConfirmPassword;
编辑文本;
编辑文本和新密码;
EditText etConfirmPassword;
SharedReferences SharedRefers;
SharedReferences.Editor;
公共密码对话框首选项(上下文上下文、属性集属性){
超级(上下文,attrs);
setDialogLayoutResource(R.layout.password\u对话框首选项);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
setDialogIcon(空);
setPersistent(假);
}
@凌驾
公共无效onBindDialogView(视图){
tvOldPassword=(TextView)view.findViewById(R.id.tvOldPassword);
tvNewPassword=(TextView)view.findViewById(R.id.tvNewPassword);
tvConfirmPassword=(TextView)view.findViewById(R.id.tvConfirmPassword);
etOldPassword=(EditText)view.findViewById(R.id.etOldPassword);
etNewPassword=(EditText)view.findViewById(R.id.etOldPassword);
etConfirmPassword=(EditText)view.findviewbyd(R.id.etOldPassword);
sharedPrefs=首选项管理器
.GetDefaultSharedReferences(getContext());
if(sharedPrefs.getString(“prefPasscode”和“).length()<4){
tvOldPassword.setVisibility(View.GONE);
etolpassword.setVisibility(View.GONE);
}
super.onBindDialogView(视图);
}
@凌驾
受保护的无效onDialogClosed(布尔正结果){
super.onDialogClosed(阳性结果);
持久布尔(正结果);
}
@凌驾
受保护的无效onPrepareDialogBuilder(AlertDialog.Builder){
super.onPrepareDialogBuilder(建造商);
//builder.setNegativeButton(null,null);
setPositiveButton(android.R.string.ok,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
sharedPrefs=首选项管理器
.GetDefaultSharedReferences(getContext());
弦奥德平;
字符串newPin=etNewPassword.getText().toString();
字符串conPin=etConfirmPassword.getText().toString();
Log.d(“pins”,etNewPassword.getText().toString()+“”+etConfirmPassword.getText().toString());
if(newPin.equals(conPin)){
//putString(“prefPasscode”,etConfirmPassword.getText().toString());
//commit();
Toast.makeText(getContext(),“Pin已保存”。+conPin,
吐司长度
).show();
}else if(etNewPassword.getText().toString().length()!=4){
Toast.makeText(getContext(),“Pin必须是4位数字。”,
吐司长度
).show();
}如果(!etNewPassword.getText().toString().equals(etConfirmPassword.getText().toString())等于,则为else{
Toast.makeText(getContext(),“Pin不匹配。”,
吐司长度
).show();
}
}
});
}
}
下面是edittext布局,我不确定inputtype:numberpassword是否引起任何问题

<EditText
                android:id="@+id/etNewPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="15dp"
                android:maxLength="4"
                android:inputType="numberPassword"
                android:width="100dp"
                android:key="keyNewPasscode"/>

<EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/etConfirmPassword"
                android:maxLength="4"
                android:textSize="15dp"
                android:inputType="numberPassword"
                android:width="100dp"
                android:key="keyConfirmPasscode"/>

您有类似的视图ID:

etOldPassword = (EditText) view.findViewById(R.id.etOldPassword);
etNewPassword = (EditText) view.findViewById(R.id.etOldPassword);
etConfirmPassword = (EditText) view.findViewById(R.id.etOldPassword);

只需使用其他输入类型就可以了?