我是一个初学者,只是在学习如何创建一个餐厅应用程序,该应用程序允许用户通过“会员登录”和“非会员”登录进行登录。主屏幕上有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);
}
});
}
答案 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);
}
});
希望这对您有所帮助。