Я столкнулся с похожими проблемами, когда была видна активность настроек приложения с загруженными настройками. Если бы я изменил одно из предпочтений, а затем повернул отображаемое содержимое и снова изменил это предпочтение, он вылетел бы с сообщением о том, что фрагмент (мой класс предпочтений) не был прикреплен к действию.
При отладке он выглядел так, как будто метод onCreate () для PreferencesFragment вызывался дважды, когда содержимое дисплея вращалось. Это было уже достаточно странно. Затем я добавил проверку isAdded () вне блока, где он будет указывать на сбой, и это решило проблему.
Вот код слушателя, который обновляет сводку предпочтений, чтобы показать новую запись. Он находится в методе onCreate () моего класса Preferences, который расширяет класс PreferenceFragment:
public static class Preferences extends PreferenceFragment {
SharedPreferences.OnSharedPreferenceChangeListener listener;
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// check if the fragment has been added to the activity yet (necessary to avoid crashes)
if (isAdded()) {
// for the preferences of type "list" set the summary to be the entry of the selected item
if (key.equals(getString(R.string.pref_fileviewer_textsize))) {
ListPreference listPref = (ListPreference) findPreference(key);
listPref.setSummary("Display file content with a text size of " + listPref.getEntry());
} else if (key.equals(getString(R.string.pref_fileviewer_segmentsize))) {
ListPreference listPref = (ListPreference) findPreference(key);
listPref.setSummary("Show " + listPref.getEntry() + " bytes of a file at once");
}
}
}
};
// ...
}
Я надеюсь, что это поможет другим!
SQL Server использует минимально возможный тип данных.
Когда вы запустите этот сценарий
SELECT SQL_VARIANT_PROPERTY(1.0, 'BaseType')
SELECT SQL_VARIANT_PROPERTY(1.0, 'Precision')
SELECT SQL_VARIANT_PROPERTY(1.0, 'Scale')
SELECT SQL_VARIANT_PROPERTY(1.0, 'TotalBytes')
, вы увидите, что SQL Server неявно использовал тип данных NUMERIC (2, 1).
При делении на 60,0 результат преобразуется в ЧИСЛО (8, 6).
Последнее вычисление преобразует результат в ЧИСЛО (17, 10).
Изменить
Взято из электронной документации по SQL Server Преобразование типов данных
В инструкциях Transact-SQL - константа с десятичной запятой автоматически преобразовано в числовое значение данных, используя минимальную точность и масштаб нужно. Например, постоянная 12,345 преобразуется в числовое значение с точностью до 5 и шкала 3.
Да, вам часто приходится бросать их, чтобы добиться большей точности. Мое мнение:
Для более точного приведения десятичных дробей перед вычислениями