无法在共享偏好中找到数据

时间:2016-05-06 04:58:14

标签: java android sharedpreferences

这就是我所做的。

  public void addToFavorites2(View view) {


        //ImageButton button = (ImageButton)findViewById(R.id.imageButton);
        //button.setImageResource(R.mipmap.star_clicked_button);

        int movieId = favoriteMovieId;


SharedPreferences settings = getSharedPreferences("FavoritesIdKey", MODE_PRIVATE);

        Log.v("tessssst", String.valueOf(settings.contains(favoriteMovieTitle)));
        SharedPreferences.Editor editor = settings.edit();

        editor.putString(favoriteMovieTitle, String.valueOf(movieId));

        editor.commit();

    }
    public boolean movieIsInFavorites()
    {

        Log.v("method check","is working");


SharedPreferences settings = getSharedPreferences("FavoritesIdKey", MODE_PRIVATE);
        Log.v("tezzzzzt", String.valueOf(settings.contains(favoriteMovieTitle)));

        if(settings.contains(String.valueOf(favoriteMovieId)))
        {
            Log.v("truth test","true");
            return true;
        }
        Log.v("truth test","false");
        return false;

    }

在给定的代码中,我创建了两个方法。在我打电话的第一种方法中

SharedPreferences settings = getSharedPreferences("FavoritesIdKey", MODE_PRIVATE);
settings.contains(FavoriteMovieTitle);

找到数据并返回true。 当我打电话给同一个

SharedPreferences settings = getSharedPreferences("FavoritesIdKey", MODE_PRIVATE);
settings.contains(FavoriteMovieTitle);

在第二种方法中,它不会返回true。我错过了共享偏好的基本要素吗?如果需要更多信息,我道歉。两种方法都是彼此相邻的,它们之间没有任何东西。

编辑 - 我将添加在按详细信息屏幕上的按钮时调用第一个方法(详细信息屏幕已完成设置和显示)。 我在onCreateView中调用的第二种方法是试图检查电影是否已经在收藏夹列表中启动了。

2 个答案:

答案 0 :(得分:0)

按下按钮时调用第一个方法,并在onCreateView中调用第二个方法。所以在第一种方法之前调用第二种方法。但是,您在第一个方法中将favoriteMovieTitle插入到xml中,因此当调用第二个方法时,favoriteMovieTitle不在xml中,它将返回false。

答案 1 :(得分:-1)

存储/获取共享偏好设置,请在您的活动中使用以下方法

SharedPreferences settings = this.getSharedPreferences("FavoritesIdKey", 
Context.MODE_PRIVATE);

SharedPreferences

中存储
SharedPreferences.Editor editor = settings.edit();
editor.putString(favoriteMovieTitle, String.valueOf(movieId));

在其他课程中阅读 SharedPreferences ,如果同一课程则写下此行 然后无需写这个直接使用getString

SharedPreferences settings = this.getSharedPreferences("FavoritesIdKey",
Context.MODE_PRIVATE);

如果您属于同一班级,则上述行不需要再写一次。

String myvalueInPref = settings.getString(favoriteMovieTitle, "defaultValue");