0

電話のアプリで色をカスタマイズできるウォッチフェイスを作成しています。

DataApiと を使用してDataItem設定を保存/ロードする例を見てきました。

私が遭遇している問題は、別のウォッチフェイスに変更して元に戻すと、内部のすべての値DataMapが null または 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);

色の値の送信/取得は実行中に機能し、データを 0 に戻すことはありませんonDestroy()onStop()

アクティビティ/ウォッチフェイスが閉じられるとdataItemsは自動的に「破棄」されますか、それとも間違って実装していますか?

助けてくれてありがとう!

4

1 に答える 1

0

あなたのgetInt呼び出しに間違った定数があると思います。COLOR_PATHは URI パス、は取得しようとしているCOLOR_KEYのキーです。intあなたが持っている必要があります:

mSelectedColor = dataMapItem.getDataMap().getInt(COLOR_KEY);
于 2015-03-01T07:58:25.170 に答える