Sử dụng đơn giản EditTextPreference
trong hoạt động sở thích của tôi:PreferenceActivity: lưu giá trị là số nguyên
<EditTextPreference
android:key="SomeKey"
android:title="@string/some_title"
android:summary="..."
android:numeric="integer"
android:maxLength="2"
/>
Có cách nào mà giá trị cấu hình này sẽ được lưu lại dưới dạng số nguyên? Dường như bây giờ nó chỉ cho phép nhập số, nhưng giá trị vẫn còn lưu lại dưới dạng chuỗi:
Calling:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
int value = preferences.getInt("SomeKey", -1);
ném tôi java.lang.ClassCastException: java.lang.String
, và:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String value = preferences.getString("SomeKey", "-1");
lấy giá trị thành công.
Cách tạo PreferenceActivity
để lưu giá trị làm số nguyên theo mặc định?
@Brutall, tôi muốn cảm ơn bạn bằng cách cải thiện mã. Nhưng có người nói với tôi rằng mã mới là ... quá dài, và anh ta từ chối nó. Ồ, nhưng mọi người làm gì nếu mã cũ là xấu, và cần phải được thay thế, nhưng họ không làm điều đó bởi vì cái mới là ... dài? Ngay cả khi nó là tốt hơn. Ôi trời, thật tuyệt! Đây là nơi dành cho các lập trình viên? Tôi có một số dự án mã nguồn mở và tôi đang mở bất kỳ thay đổi nào đối với mã của mình. Làm thế nào xấu hổ với anh ta! Dù sao, cảm ơn bạn rất nhiều, Brutall. –
Btw, tất cả những gì tôi làm là: đặt kiểu đầu vào thành số; thêm một 'TextWatcher', để đảm bảo rằng người dùng văn bản nhập vào không rỗng, và giá trị mặc định là' 0'. –
im nhận được lỗi thời gian chạy trên 'return String.valueOf (getPersistedInt (-1));', không thể bắt đầu hoạt động do dòng đó – ibaguio