我正在创建一个需要用户创建4位数字密码的应用程序,以后该密码将用于登录该应用程序。我将如何设置,以便在未创建密码的情况下进入登录页面,而在未创建密码的情况下进入登录页面。启动活动需要是注册页面,登录页面还是其他页面?谢谢
答案 0 :(得分:2)
您可以为此使用SharedPreferences
。
当您注册用户时,将一个值存储在SharedPreferences
中,然后每次打开该应用程序时都要求输入该值,如果为true,则转到LoginPage,如果不是,则转到RegisterPage
当用户注册到应用程序时:
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putBoolean("userRegistered", true);
editor.apply();
然后,每次启动应用程序时,请执行以下操作:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
Boolean isUserRegistered = prefs.getString("userRegistered", false); //False is a default value
if (isUserRegistered) {
startActivity(new Intent(this,Login.class));
}
else{
startActivity(new Intent(this,Register.class));
}
//Shorter way
startActivity(isUserRegistered ? new Intent(this,Login.class) : new Intent(this,Register.class));
您可以在SplashActivity
中进行操作,因此可以执行类似此人Splash Activity example的操作
答案 1 :(得分:0)
启动活动可能是某种“飞溅”活动。在获取所有准备工作并决定下一步操作时,只需显示应用程序徽标即可。
答案 2 :(得分:0)
一种可能的方法是使用Shared Preference保存用户是否拥有密码的信息。 活动开始时,只需检查该信息并确定要加载哪个页面
答案 3 :(得分:0)
以EditTexts作为LoginId和密码开头。密码可以保存在SharedPreferences中。 在其下方包括一个Textview,询问“首次用户?”通过OnClick重定向到新的片段或活动进行注册。
如果您希望用户避免在每次启动应用程序时输入登录凭据,请参阅此文章。
https://medium.com/@prakharsrivastava_219/keep-the-user-logged-in-android-app-5fb6ce29ed65
答案 4 :(得分:0)
我建议您使用片段:
只需在您的StartActivity中包含一个片段容器,就像这样:
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
创建两个单独的片段,用于注册和注册后的用户交互。然后添加一个字段,该字段将通知您是否已注册用户:
SharedPreferences spref = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
Boolean isRegistered = spref.getString("userRegistered", false);
现在,根据isRegistered值,只需将所需的片段(注册或交互)添加到容器中即可:
FragmentManager myFragmentManager = getFragmentManager();
if (isRegistered) {
FragmentTransaction fragmentTransaction = myFragmentManager
.beginTransaction();
fragmentTransaction.add(R.id.container, myFragmentRegistr, TAG_1);
fragmentTransaction.commit();
} else {
FragmentTransaction fragmentTransaction = myFragmentManager
.beginTransaction();
fragmentTransaction.add(R.id.container, myFragmentInteract, TAG_1);
fragmentTransaction.commit();
}