Как вызвать сохраненный элемент данных в Android Wear?

Я создаю циферблат, цвет которого можно настроить через приложение на телефоне.

Я видел примеры использования DataApi и DataItem для сохранения/загрузки настроек.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я переключаюсь на другой циферблат и возвращаюсь обратно, все значения внутри DataMap кажутся сбрасываемыми на ноль или 0.

Вот пример моего метода onCreate() циферблата Wear, который попытается загрузить последний использованный цвет:

    PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient);
    results.setResultCallback(new ResultCallback<DataItemBuffer>() {
        @Override
        public void onResult(DataItemBuffer dataItems) {
        if (dataItems.getCount() != 0) {
            for (int i = 0; i < dataItems.getCount(); i++) {
                DataMapItem dataMapItem = DataMapIfromDataItem(dataItems.get(i));
                if (dataMapItem.getDataMap().containsKey(COLOR_KEY)) {
                    mSelectedColor = dataMapItem.getDataMap().getInt(COLOR_PATH);
                    }
                }
            }
            dataItems.release();
        }
    });

Обратите внимание, что строка mSelectedColor = dataMap... вернет 0.

Вот пример кода из мобильного приложения, в котором будут храниться эти данные:

        PutDataMapRequest dataMap = PutDataMapRequest.create(COLOR_PATH);
        dataMap.getDataMap().putInt(COLOR_KEY, mSelectedColor);

Отправка/получение значения цвета работает во время работы, а onDestroy() или onStop() не изменяет данные обратно на 0.

Являются ли элементы данных автоматически «удаляемыми», когда действие/циферблат закрывается, или я неправильно это реализую?

Спасибо за помощь!


person JTY    schedule 01.03.2015    source источник


Ответы (1)


Я думаю, что у вас неправильная константа в вашем вызове getInt. COLOR_PATH — это путь URI, COLOR_KEY — ключ int, который вы пытаетесь получить. Вы должны иметь:

mSelectedColor = dataMapItem.getDataMap().getInt(COLOR_KEY);
person Sanketh Katta    schedule 01.03.2015
comment
О боже... не могу поверить, что допустил такую ​​очевидную ошибку :/ Большое вам спасибо! - person JTY; 01.03.2015