1

SharedPreferencesは初めてです。sharedpreferencesを使用してユーザープロファイルを保存したいのですが、ユーザーが2回目にプロファイルアクティビティにアクセスすると、前に入力した詳細が表示されます。どうすればそれができますか?そのためのコードを教えていただけますか?

これが私が試したことですが、elseステートメントの場合に何を入れるべきかわかりません:

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;

public class A extends Activity
{
   private static final String MY_KEY = "myprefs";
   private SharedPreferences myPrefs;
   private boolean loggedIn;

  protected void onCreate(Bundle savedInstanceState) 
  {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.iprofile);

   myPrefs = getSharedPreferences(MY_KEY, MODE_PRIVATE);

   loggedIn = myPrefs.getBoolean("loggedIn", false);  //default to false if the value has not been set

   if(loggedIn)
   {
      //do stuff

   }
  else
   {
       //do other stuff
    }
}
}

これは私のxmlファイルです:http://pastebin.com/gXCHpk0Eと私のjavaクラス:http://pastebin.com/NZJ0CR8H

4

3 に答える 3

2

次のようなユーザークラスがあるとします。

class User
{
    private String name;
    private String pass;
    private int age;

    public User(String name, String pass, int age)
    {
        this.name = name;
        ...
    }

    //getters and setters
}

電話の SharedPreferences で、必要に応じてユーザーの読み取りまたは書き込みを行う静的ユーティリティ関数を作成できます。

public class UserCreator
{
    public static User getUser(Context context)
    {
        SharedPreferences prefs = context.getSharedPreferences("Name", Context.MODE_PRIVATE);

        //Check if the user is already stored, if is, then simply get the data from
        //your SharedPreference object.

        boolean isValid = prefs.getBoolean("valid", false);

        if(isValid)
        {
            String user = prefs.getString("user", "");
            String pass = prefs.getString("pass", "");
            int age = prefs.getInt("age", 0); 
            ...
            return new User(user, pass, age); 
        }
        //If not, then store data
        else
        {
            //for example show a dialog here, where the user can log in.
            //when you have the data, then:

            if(...login successful...)
            {
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString("user", "someusername");
                editor.putString("pass", "somepassword");
                editor.putInt("age", 20);
                editor.putBoolean("valid", true);
                ...
                editor.commit();
            }

            return getUser(context);
        }
    }
}

それがある場合は、アクティビティでこれを簡単に実行できます(実際にはすべてのアクティビティ):

User user = UserCreator.getUser(this);

ユーザー データが格納されている場合は、有効なユーザー オブジェクトが返されます。そうでない場合は、ユーザーが許容可能なデータを入力するまでユーザーに尋ね、有効なユーザー オブジェクトを返します。

于 2012-08-27T11:38:57.720 に答える
0

次のスニペットを確認してください。

  SharedPreferences myPrefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
                SharedPreferences.Editor prefsEditor = myPrefs.edit();
                prefsEditor.putString("user", edtsample.getEditableText().toString());
                prefsEditor.commit();

同じユーザーとパスワードを取得する場合:

 SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
    String prefName = myPrefs.getString("SRATE", "srate");
于 2012-08-27T13:14:45.783 に答える