【问题标题】:android shared preferences implementationandroid共享首选项实现
【发布时间】:2012-05-09 10:48:54
【问题描述】:

您好,我已尝试实现共享首选项,但我尝试的一切似乎都不起作用。我想要当有人单击列表视图中的项目时,它将有关该选择的数据存储在共享首选项中。当应用程序加载时,我希望它检查共享偏好,即:如果没有偏好,则转到此活动,否则转到另一个活动。我也想知道当我被发送到另一个活动时是否有一些偏好如何检索它们。这不是我第一次问这个问题,但我想我会再问,因为我不是很清楚

这是我到目前为止所尝试的

protected void onListItemClick (ListView l, View v, int position, long id) { 
        Intent intent = new Intent(this, HomeActivity.class);
        try {
            Log.v("lc", "try1");
            JSONObject singleTeamDictionary = teamNamesArray.getJSONObject(position);

            Log.v("lc", "dictionary:" + singleTeamDictionary);

            Log.v("lc", "try2");
             ChosenTeam = (String) singleTeamDictionary.get("name");
             ChosenTeamId = (String) singleTeamDictionary.get("team_id");
             ChosenLeagueId = (String) singleTeamDictionary.get("league_id");
             ChosenDivisionID = (String) singleTeamDictionary.get("division_id");

             Log.v("lc", "try3");

             Log.v("lc", "ChosenTeam: " + ChosenTeam);
             Log.v("lc", "ChosenTeamId: " + ChosenTeamId);
             Log.v("lc", "ChosenLeagueId: " + ChosenLeagueId);
             Log.v("lc", "ChosenDivisionID: " + ChosenDivisionID);          


        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.v("lc", "catch");

        }

        String curPos = Integer.toString(position);
    Log.v("lc", "teamPos: " + curPos);

    SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("ChosenMethod", "Team");
    editor.putString("ChosenTeam", ChosenTeam);
    editor.putString("ChosenTeamId", ChosenTeamId);
    editor.putString("ChosenLeagueId", ChosenLeagueId);
    editor.putString("ChosenDivisionID", ChosenDivisionID);
    editor.commit();


        //or just use the position:
        intent.putExtra("itemIndex", curPos);
        intent.putExtra("fullData", fulldata); //or just the part you want
        startActivity(intent);
    }

然后在介绍活动中

public void checkPreferences(){


    SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);

    String ChosenMethod = preferences.getString("chosenTeam", ChosenTeam);


    //String ChosenMethod = preferences.getString("ChosenMethod", null);
//getPWDFromSP()


    //SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
     //Log.v("myapp", "prefs = " + preferences);
     //String ChosenMethod = preferences.getString("ChosenMethod", chosenMethod);
     Log.v("myapp", "ChosenMethod = " + ChosenMethod);

     if (ChosenMethod != null){

         Intent intent = new Intent(TheEvoStikLeagueActivity.this,Activity.class);

     }




}


            @Override

            public void onCreate(Bundle icicle) {

                    super.onCreate(icicle);

                    setContentView(R.layout.main);
                    checkPreferences();

【问题讨论】:

    标签: android listview preferences


    【解决方案1】:

    “chosenTeam”与“ChosenTeam”不同。

    【讨论】:

      【解决方案2】:

      希望这段代码对你有帮助

      private SharedPreferences sp;
      private Editor e;
      
      //create methods
      //save method(string)
      private void savePreferences(String key,String val){
          sp = getSharedPreferences("prefs", 0);
          e = sp.edit();
          e.putString(key , val);
          e.commit();
      }
      
      //get method
      private String getPreferences(String key){
          sp = getSharedPreferences("prefs", 0);
          String value = sp.getString(key, "");
          return value;
      }
      
      //save String
      savePreferences("yourKey","yourString");
      
      //get Preferences
      getPreferences("yourKey")
      
      //check value saved or not
      if(getPreferences("yourKey").equals(null)){
         //do something
         Log.i("value","null");
      }
      else{
         //do something
         Log.i("value","exists");
      }
      

      如果你想保存整数或布尔值,你可以编辑方法 并根据需要返回值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 2012-09-20
        • 2012-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多