如何在一个按钮中仅按SharedPreference保存一个phoneId和密码

时间:2018-10-04 07:44:49

标签: java android sharedpreferences autologin

我是一个初学者,只是在学习如何创建一个餐厅应用程序,该应用程序允许用户通过“会员登录”和“非会员”登录进行登录。主屏幕上有3个按钮:菜单,登录,注册。允许新成员每次注册(注册)和登录(登录)到应用程序中,而非成员可以跳过菜单/登录过程,通过(菜单按钮)直接查看餐厅菜单。

我需要将每个成员/非成员交易订单捕获到firebase中。所以我可以在菜单按钮的SharedPreference中仅设置1个phoneId和密码,以使“非会员”在点击(菜单按钮)时自动登录系统。如果可能,我可以知道如何实施吗?谢谢

MainActivity.java

public class MainActivity extends AppCompatActivity {

Button btnSignIn, btnSignUp, btnMenu;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnMenu = (Button)findViewById(R.id.btnMenu);
    btnSignUp = (Button)findViewById(R.id.btnSignUp);
    btnSignIn = (Button)findViewById(R.id.btnSignIn);

    btnMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        }
    });

    btnMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent home = new Intent(MainActivity.this, Home.class);
            //Common.currentUser = user;
            startActivity(home);


        }
    });

    btnSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent signUp = new Intent(MainActivity.this, SignUp.class);
            startActivity(signUp);
        }
    });

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent signIn = new Intent(MainActivity.this, SignIn.class);
            startActivity(signIn);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

初学者,请记住以下有关Android中数据存储的要点:

1)何时使用共享首选项->

如果您要保留的实体只有一个值。

例如,在您的情况下,每个应用程序只有一个用户。因此,您可以将用户名,密码和其他信息存储在共享首选项中。

2)何时使用SQLite数据库->

如果要保存的实体有多个值。

例如,您可以使用SQLite来存储用户订单。

解决问题的方法:

1)创建 Constant.java ,它将保存您的默认电话ID和密码。

public static final String DEFAULT_PHONE_ID = "your_default_id";
public static final String DEFAULT_PASSWORD = "your_default_password";

2)创建 AppPreferences.java ,它将保存并检索您的首选项。

    public class AppPreferences {
            // Class variables
                private Context context;
                private static SharedPreferences sharedPreferences;
                private static SharedPreferences.Editor editor;
                private int PRIVATE_MODE = 0;

     // Define your preferences key
     private static final String USER_PHONE = "user_id";
     private static final String USER_PASSWORD = "user_password";

        private AppPreferences(Context context) {
                this.context = context;
                sharedPreferences = this.context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
                if (sharedPreferences != null)
                {
                    editor = sharedPreferences.edit();
                }
            }   

//Store userPhoneId
         private void setUserPhoneId(String userId){
         String TAG = "AppPreferences : setUserId";
        try
        {
            editor.putString(USER_PHONE, userId);
            editor.commit();
        } catch (Exception e) {
            Log.e(TAG, e);
        }
}

// Get userPhoneId
public String getUserPhoneId(){
  return sharedPreferences.getString(USER_PHONE,"default_phone");
}

//Store userPassword
         private void setUserPasswword(String userPassword){
         String TAG = "AppPreferences : setUserPassword";
        try
        {
            editor.putString(USER_PASSWORD, userPassword);
            editor.commit();
        } catch (Exception e) {
            Log.e(TAG, e);
        }
}

// Get userPassword
public String getUserPassword(){
  return sharedPreferences.getString(USER_PASSWORD,"default_phone");
}

}

在您的活动中:

private AppPreference appPreference;

onCreate(){

appPreference = new AppPreference(this);

}

 btnMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent home = new Intent(MainActivity.this, Home.class);
            //Here save user info to preferences
            appPreference.setUserPhoneId(Constants.DEFAULT_PHONE_ID);
            appPreference.setUserPassword(Constants.DEFAULT_PASSWORD);
            startActivity(home);


        }
    });

    btnSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent signUp = new Intent(MainActivity.this, SignUp.class);
            startActivity(signUp);
        }
    });

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent signIn = new Intent(MainActivity.this, SignIn.class);
            startActivity(signIn);
        }
    });

希望这对您有所帮助。