android - 使用共享首选项显示启动画面一次

标签 android

我有一个屏幕,我想在我的应用程序加载时首次显示该屏幕。然后,如果您退出或点击主屏幕,请再次打开该应用程序,我不想显示启动画面。

我试图通过使用共享首选项来实现这一点。

当我运行该应用程序时,它显示第一个屏幕。但是如果我退出并重新打开它,它仍然显示相同的屏幕。

我尝试通过将 Boolean 默认设置为 true 来显示屏幕。然后在运行后将其设置为 false,以便下次运行时将显示 main_activity.xml 而不是 splashscreen.xml

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();


        boolean firstTimeRun = getFirstTimeRun();

        if (firstTimeRun == true) {
            firstTimeRun();
        } else {
            run();
        }

        storeFirstTimeRun();

    }

    private boolean getFirstTimeRun() {
        SharedPreferences prefs = getSharedPreferences("First Time Run Value", MODE_PRIVATE);
        boolean firstTimeRun = prefs.getBoolean("firstRun", true);
        return firstTimeRun;
    }

    private void storeFirstTimeRun() {
        SharedPreferences prefs = getSharedPreferences("First Time Run Value", MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("first Run", false);
        editor.commit();
    }


    private void firstTimeRun() {
        setContentView(R.layout.splashscreen);
    }

    private void run() {
        setContentView(R.layout.activity_main);
        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }


    public void CuFStudy(View view) {
        Intent i = new Intent(this, Careunderfirestudy.class);
        startActivity(i);
    }

    public void TFCStudy(View view) {
        Intent i = new Intent(this, Tacticalfieldcarestudy.class);
        startActivity(i);
    }

    public void TECStudy(View view) {
        Intent i = new Intent(this, Tacticalevacuationcarestudy.class);
        startActivity(i);
    }

    public void CuFQuiz(View view) {
        Intent i = new Intent(this, Careunderfirequiz.class);
        startActivity(i);
    }

    public void TFCQuiz(View view) {
        Intent i = new Intent(this, Tacticalfieldcarequiz.class);
        startActivity(i);
    }

    public void TECQuiz(View view) {
        Intent i = new Intent(this, Tacticalevacuationcarequiz.class);
        startActivity(i);
    }

}

最佳答案

两个键是不同的,用于在 SharedPreferences 中检索和存储值。

使用 firstRun 作为 storeFirstTimeRun 方法中的键:

...
editor.putBoolean("firstRun", false);
editor.commit();

关于android - 使用共享首选项显示启动画面一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210272/

相关文章:

java - 我可以读取链接 key 表吗?

android - 现代 Android 小部件开发

android - Genymotion 应用程序崩溃/卡住

java - 如何将ArrayList发送到BaseAdapter Android

android - 将初始数据提供给 fragment 的正确方法?

android - 工具栏内的 TabLayout

android - 两个 recyclerview 在一个列表中滚动

android - 当所有应用程序都备份到新手机时,FCM token 不会更新

android - 如何将sdkmanager添加到我的环境变量路径?

android - 如何解决某些 Android 设备上前置摄像头视频录制的伪影问题?