0

こんにちは、共有設定を実装しようとしましたが、すべてがうまくいかないようです。誰かがリストビューの項目をクリックすると、その選択に関するデータが共有設定に保存されます。アプリが読み込まれると、共有設定を確認したいです。つまり、設定がない場合はこのアクティビティに移動し、そうでない場合は別のアクティビティに移動します。また、別のアクティビティに送信されたときに設定を取得する方法があるかどうかも知りたいです。この質問をしたのは初めてではありませんが、あまり明確ではなかったので、もう一度質問したいと思いました

これが私がこれまでに試したことです

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();
4

2 に答える 2

0

「chosenTeam」は「ChosenTeam」と同じではありません。

于 2012-05-09T10:51:55.017 に答える
0

このコードがお役に立てば幸いです

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");
}

整数またはブール値を保存したい場合は、メソッドを編集して、必要に応じて値を返すことができます。

于 2012-05-09T11:02:08.333 に答える