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);
只需使用其他输入类型就可以了?