使用启动画面运行不同的活动

时间:2017-08-14 03:37:16

标签: android

当用户第一次打开应用程序时,我想在启动画面后运行注册页面,但是当用户重新打开应用程序时,用户应该在启动画面后直接获取输入密码选项

我已经在我的应用中使用了启动画面,并且对于那个问题我应该在哪里更改代码?

3 个答案:

答案 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.javaRegistration.java。用户首次安装并打开应用程序时,您希望SplashScreen在注册前首先出现。下一次,不再有SplashScreen;直接开放注册。对?

splash_screen.xml

register.xml

解决方案

所以,只需在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"/>

参考

  • 我在Bitbucket here中分享了完整代码,看看
  • 要在将来升级SharedPreferencesthis非常有用

希望这有帮助!