保存的首选项未被检索

时间:2016-05-22 13:29:44

标签: android xamarin.android android-sharedpreferences

我的项目中有一个视频下载器类,它从给定的URL下载视频,并在下载完成时将首选项保存为true。我检查首选项是否在另一个类中为了从其路径获取视频以进行回放。下载程序首先检查文件是否按如下方式下载:

string isVideoDownloaded = Utils.readPreferences(ctx, video.getUrl(), "false");
            bool isVideoAvailable = Boolean.Parse(isVideoDownloaded);

下载完成后,将执行以下代码。

                    activity.RunOnUiThread(() =>
                 {
                     Utils.savePreferences(ctx, video.getUrl(), "true");
                 });

首选项以下列方式保存:

        public static void savePreferences(Context activity, string key, string defaultValue)
    {
        ISharedPreferences sp = PreferenceManager.GetDefaultSharedPreferences(activity.ApplicationContext);
        ISharedPreferencesEditor editor = sp.Edit();
        editor.Clear();
        editor.PutString(key, defaultValue);
        editor.Commit();
    }

在播放视频之前,请使用以下方法检查首选项:

private bool isVideoDownloaded(Video video)
    {

        string isVideoDownloaded = Utils.readPreferences(context, video.getUrl(), "false");
        bool isVideoAvailable = Boolean.Parse(isVideoDownloaded);
        if (isVideoAvailable)
        {
            //If video is downloaded then hide its progress
            hideProgressSpinner(video);
            return true;
        }

        showProgressSpinner(video);
        return false;
    }

但是首选项始终返回为false。我使用相同的上下文来进行下载回报。这段代码在我第一次编写时工作,但现在每次都返回false。 我是android的初学者,所以我很难弄清楚我在这里做错了什么以及如何解决它。

我能做些什么才能让它发挥作用?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

savePerference方法中删除editor.Clear()

public static void savePreferences(Context activity, string key, string defaultValue)
    {
        ISharedPreferences sp = PreferenceManager.GetDefaultSharedPreferences(activity.ApplicationContext);
        ISharedPreferencesEditor editor = sp.Edit();
        // editor.Clear(); comment this line of code
        editor.PutString(key, defaultValue);
        editor.Commit(); 
    }