当用户第一次打开应用程序时,我想在启动画面后运行注册页面,但是当用户重新打开应用程序时,用户应该在启动画面后直接获取输入密码选项
我已经在我的应用中使用了启动画面,并且对于那个问题我应该在哪里更改代码?
答案 0 :(得分:1)
使用sharedPreference使用会话管理。在启动屏幕上添加条件,即用户是newUser
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
Boolean newUser = prefs.getBoolean("newUser", true);
if(newUser){
//chnge newUser value in shared pref, you'll also need to chage this
//on the time of logout to manage session
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("newUser", false);
editor.apply();
//open registration activity
}else{
//open activity with password only
}
答案 1 :(得分:0)
老实说,我不明白你真正想要的是什么。
但如果您想要在每次用户回来时显示SplashScreen,您可以在finish()
注册页面中onPause()
。
答案 2 :(得分:0)
我同意你应该使用SharedPreferences
。
因为你没有提供代码,我认为你有2个活动; SplashScreen.java
和Registration.java
。用户首次安装并打开应用程序时,您希望SplashScreen在注册前首先出现。下一次,不再有SplashScreen;直接开放注册。对?
所以,只需在SplashScreen.java
中执行所有操作即可。我有一个checkFirstRun()
功能,可以使用SharedPreferences
始终检查首次运行:
PREFS_FIRST_RUN
值为true
。 PREFS_FIRST_RUN
设置为false
以记录该用户已首次运行。PREFS_FIRST_RUN
中的checkFirstRun()
始终为false
,因此会跳过启动画面页面。 <强> SplashScreen.java
强>
public class SplashScreen extends AppCompatActivity {
final String PREFS_NAME = "MyPrefsFile";
final String PREFS_FIRST_RUN = "first_run";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
checkFirstRun();
}
private void checkFirstRun() {
SharedPreferences sharedPreferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
// If the app is launched for first time, view splash screen and setup 'Next >>' link.
if (sharedPreferences.getBoolean(PREFS_FIRST_RUN, true)) {
// Record that user have done first run.
sharedPreferences.edit().putBoolean(PREFS_FIRST_RUN, false).apply();
// Setup on click listener to 'Next >>' text view.
TextView nextLink = (TextView) findViewById(R.id.nextTextView);
nextLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goToRegistration();
}
});
}
// Else, directly go to Registration page.
else {
goToRegistration();
}
}
// Go to Registration page.
public void goToRegistration() {
Intent intent = new Intent(this, Registration.class);
startActivity(intent);
finish();
}
}
<强> splash_screen.xml
强>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"
tools:context="com.geoinfo.asmasyakirah.firstrun.SplashScreen">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/splash"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/splashTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Splash Screen!"
android:textSize="30sp"
android:textStyle="bold"
android:textColor="#ffffff"
android:textAlignment="center"
android:layout_below="@+id/imageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/nextTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Next \\"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="#ffffff"
android:textAlignment="center"
android:layout_below="@+id/splashTextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
希望这有帮助!