22
33import android .os .Bundle ;
44import android .text .InputType ;
5- import android .text .Selection ;
65
76import androidx .preference .EditTextPreference ;
87import androidx .preference .ListPreference ;
1716
1817public class FragmentSettings extends PreferenceFragmentCompat {
1918
19+ // Set a non-empty decimal EditTextPreference
20+ private void setupDecimalEditTextPreference (EditTextPreference preference ) {
21+ if (preference != null ) {
22+ preference .setSummaryProvider ((Preference .SummaryProvider <EditTextPreference >) pref ->
23+ getResources ().getString (R .string .setting_current_value ) + pref .getText ());
24+ preference .setOnBindEditTextListener (editText -> {
25+ editText .setInputType (InputType .TYPE_NUMBER_FLAG_DECIMAL | InputType .TYPE_CLASS_NUMBER );
26+ editText .setSelection (editText .length ());
27+ });
28+ preference .setOnPreferenceChangeListener ((pref , newValue ) -> {
29+ if (newValue .toString ().trim ().isEmpty ()) {
30+ GoUtils .DisplayToast (this .getContext (), getResources ().getString (R .string .app_error_input_null ));
31+ return false ;
32+ }
33+ return true ;
34+ });
35+ }
36+ }
37+
2038 @ Override
2139 public void onCreatePreferences (Bundle savedInstanceState , String rootKey ) {
2240 // Load the preferences from an XML resource
@@ -38,68 +56,16 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
3856 }
3957
4058 EditTextPreference pfWalk = findPreference ("setting_walk" );
41- if (pfWalk != null ) {
42- // 使用自定义 SummaryProvider
43- pfWalk .setSummaryProvider ((Preference .SummaryProvider <EditTextPreference >) preference -> getResources ().getString (R .string .setting_current_value ) + preference .getText ());
44- pfWalk .setOnBindEditTextListener (editText -> {
45- editText .setInputType (InputType .TYPE_NUMBER_FLAG_DECIMAL | InputType .TYPE_CLASS_NUMBER );
46- Selection .setSelection (editText .getText (), editText .length ());
47- });
48- pfWalk .setOnPreferenceChangeListener ((preference , newValue ) -> {
49- if (newValue .toString ().trim ().length () == 0 ) {
50- GoUtils .DisplayToast (this .getContext (),getResources ().getString (R .string .app_error_input_null ));
51- return false ;
52- }
53- return true ;
54- });
55- }
59+ setupDecimalEditTextPreference (pfWalk );
5660
5761 EditTextPreference pfRun = findPreference ("setting_run" );
58- if (pfRun != null ) {
59- pfRun .setSummaryProvider ((Preference .SummaryProvider <EditTextPreference >) preference -> getResources ().getString (R .string .setting_current_value ) + preference .getText ());
60- pfRun .setOnBindEditTextListener (editText -> {
61- editText .setInputType (InputType .TYPE_NUMBER_FLAG_DECIMAL | InputType .TYPE_CLASS_NUMBER );
62- Selection .setSelection (editText .getText (), editText .length ());
63- });
64- pfRun .setOnPreferenceChangeListener ((preference , newValue ) -> {
65- if (newValue .toString ().trim ().length () == 0 ) {
66- GoUtils .DisplayToast (this .getContext (),getResources ().getString (R .string .app_error_input_null ));
67- return false ;
68- }
69- return true ;
70- });
71- }
62+ setupDecimalEditTextPreference (pfRun );
63+
7264 EditTextPreference pfBike = findPreference ("setting_bike" );
73- if (pfBike != null ) {
74- pfBike .setSummaryProvider ((Preference .SummaryProvider <EditTextPreference >) preference -> getResources ().getString (R .string .setting_current_value ) + preference .getText ());
75- pfBike .setOnBindEditTextListener (editText -> {
76- editText .setInputType (InputType .TYPE_NUMBER_FLAG_DECIMAL | InputType .TYPE_CLASS_NUMBER );
77- Selection .setSelection (editText .getText (), editText .length ());
78- });
79- pfBike .setOnPreferenceChangeListener ((preference , newValue ) -> {
80- if (newValue .toString ().trim ().length () == 0 ) {
81- GoUtils .DisplayToast (this .getContext (),getResources ().getString (R .string .app_error_input_null ));
82- return false ;
83- }
84- return true ;
85- });
86- }
65+ setupDecimalEditTextPreference (pfBike );
8766
8867 EditTextPreference pfAltitude = findPreference ("setting_altitude" );
89- if (pfAltitude != null ) {
90- pfAltitude .setSummaryProvider ((Preference .SummaryProvider <EditTextPreference >) preference -> getResources ().getString (R .string .setting_current_value ) + preference .getText ());
91- pfAltitude .setOnBindEditTextListener (editText -> {
92- editText .setInputType (InputType .TYPE_NUMBER_FLAG_DECIMAL | InputType .TYPE_CLASS_NUMBER );
93- Selection .setSelection (editText .getText (), editText .length ());
94- });
95- pfAltitude .setOnPreferenceChangeListener ((preference , newValue ) -> {
96- if (newValue .toString ().trim ().length () == 0 ) {
97- GoUtils .DisplayToast (this .getContext (),getResources ().getString (R .string .app_error_input_null ));
98- return false ;
99- }
100- return true ;
101- });
102- }
68+ setupDecimalEditTextPreference (pfAltitude );
10369
10470 SwitchPreferenceCompat pLog = findPreference ("setting_log_off" );
10571 if (pLog != null ) {
@@ -120,20 +86,12 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
12086 }
12187
12288 EditTextPreference pfPosHisValid = findPreference ("setting_pos_history" );
123- if (pfPosHisValid != null ) {
124- // 使用自定义 SummaryProvider
125- pfPosHisValid .setSummaryProvider ((Preference .SummaryProvider <EditTextPreference >) preference -> getResources ().getString (R .string .setting_current_value ) + preference .getText ());
126- pfPosHisValid .setOnBindEditTextListener (editText -> {
127- editText .setInputType (InputType .TYPE_NUMBER_FLAG_DECIMAL | InputType .TYPE_CLASS_NUMBER );
128- Selection .setSelection (editText .getText (), editText .length ());
129- });
130- pfPosHisValid .setOnPreferenceChangeListener ((preference , newValue ) -> {
131- if (newValue .toString ().trim ().length () == 0 ) {
132- GoUtils .DisplayToast (this .getContext (),getResources ().getString (R .string .app_error_input_null ));
133- return false ;
134- }
135- return true ;
136- });
137- }
89+ setupDecimalEditTextPreference (pfPosHisValid );
90+
91+ EditTextPreference pfLatOffset = findPreference ("setting_lat_max_offset" );
92+ setupDecimalEditTextPreference (pfLatOffset );
93+
94+ EditTextPreference pfLonOffset = findPreference ("setting_lon_max_offset" );
95+ setupDecimalEditTextPreference (pfLonOffset );
13896 }
13997}
0 commit comments