如何在Android Wear中调用已保存的dataItem?

时间:2015-03-01 01:04:09

标签: android wear-os android-wear-data-api

我正在创建一个可以通过手机上的应用程序自定义颜色的表盘。

我见过的示例使用DataApiDataItem来保存/加载设置。

我遇到的问题是当我换到另一个表盘并换回时,DataMap内的所有值似乎都会重置为null或0。

以下是Wear watchface的onCreate()方法示例,该方法将尝试加载上次使用的颜色:

    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。

dataItems是否自动&#34;处理&#34;当一个活动/表盘关闭,或者我实施这个错误的时候?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为你的getInt电话上有错误的常数。 COLOR_PATH是URI路径,COLOR_KEY是您尝试检索的int的关键字。你应该:

mSelectedColor = dataMapItem.getDataMap().getInt(COLOR_KEY);