Я уверен, что это что-то действительно простое, что я упускаю из виду, но по сравнению со всеми статьями, которые я исследовал, я, кажется, делаю это правильно.
У меня есть DialogPreference, в котором есть edittexts для имени пользователя и пароля, и кнопка для сохранения данных в настройках. После создания я хотел бы запросить настройки и заполнить поля текста редактирования ранее сохраненными данными для редактирования, в противном случае оставьте поля пустыми. В настоящее время, если никаких предыдущих данных не существует, у меня нет проблем, но если данные существуют, мое приложение падает при попытке открыть DialogPreference.
Мой код DialogPreference:
public class AccDialog extends DialogPreference implements DialogInterface.OnClickListener {
private EditText mUserbox, mPassbox;
CharSequence mPassboxdata, mUserboxdata;
private Context mContext;
private int mWhichButtonClicked;
public AccDialog(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}
@Override
protected View onCreateDialogView() {
// Access default SharedPreferences
@SuppressWarnings("unused")
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mContext);
// Register listener
final OnCheckedChangeListener mShowchar_listener;
// Run the following methods onCreate
existingData();
@SuppressWarnings("unused")
LinearLayout.LayoutParams params;
LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(10, 10, 10, 10);
layout.setBackgroundColor(0xFF000000);
mUserbox = new EditText(mContext);
mUserbox.setSingleLine(true);
mUserbox.setSelectAllOnFocus(true);
mPassbox = new EditText(mContext);
mPassbox.setSingleLine(true);
mPassbox.setSelectAllOnFocus(true);
layout.addView(mUserbox);
layout.addView(mPassbox);
return layout;
}
private void existingData() {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mContext);
String Unamedata = pref.getString("usernamekey", "");
String Pworddata = pref.getString("passwordkey", "");
if((Unamedata.length() != 0) && (Pworddata.length() != 0)) {
mUserbox.setText(Unamedata);
mPassbox.setText(Pworddata);
}
}
}