一次性欢迎屏幕无效

问题描述 投票:-1回答:3

所以我想通过在另一篇文章中找到的答案中使用SharedPreferences为我的应用程序创建一次性介绍屏幕。起初,代码似乎正在工作,但现在不是。谁能告诉我发生了什么事?

WelcomeActivity.java(启动器活动):

package org.reliefdev.reliefdevedworking;

import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class WelcomeActivity extends AppCompatActivity {

    SharedPreferences prefs;
    final String showWelcomeScreenString = "showWelcome";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);


        Button getStarted = findViewById(R.id.getStartedBtn);

        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        final Boolean welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString, false);

        getStarted.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (welcomeScreenShown) {
                    startActivity(new Intent(WelcomeActivity.this, LoginReliefAccountActivity.class));
                    SharedPreferences.Editor editor = prefs.edit();
                    editor.putBoolean(showWelcomeScreenString, true);
                    editor.apply();

                } else if(!welcomeScreenShown){
                    startActivity(new Intent(WelcomeActivity.this, LoginReliefAccountActivity.class));
                }
            }
        });
    }
}
java android sharedpreferences
3个回答
0
投票

Init:final Boolean welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString,true); AS True。第一次运行后使其为False:editor.putBoolean(showWelcomeScreenString,false);

 public class WelcomeActivity extends AppCompatActivity {

SharedPreferences prefs;
final String showWelcomeScreenString = "showWelcome";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);


    Button getStarted = findViewById(R.id.getStartedBtn);

    prefs = PreferenceManager.getDefaultSharedPreferences(WelcomeActivity.this);
    final Boolean welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString, true);

    getStarted.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (welcomeScreenShown) {
                startActivity(new Intent(WelcomeActivity.this, LoginReliefAccountActivity.class));
                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean(showWelcomeScreenString, false);
                editor.apply();

            } else if(!welcomeScreenShown){
                startActivity(new Intent(WelcomeActivity.this, LoginReliefAccountActivity.class));
            }
        }
    });
}

}


0
投票

有用

public class MainActivity extends AppCompatActivity {

SharedPreferences prefs;
 boolean welcomeScreenShown ;
final String showWelcomeScreenString = "showWelcome";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Button getStarted = (Button) findViewById(R.id.txt);

    prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
    welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString, true);

    getStarted.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "welcomeScreenShown:"+welcomeScreenShown, Toast.LENGTH_SHORT).show();
            System.out.println("welcomeScreenShown:"+welcomeScreenShown);
            if (welcomeScreenShown) {
                welcomeScreenShown = false;

                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean(showWelcomeScreenString, false);
                editor.apply();
                //startActivity(new Intent(MainActivity.this, LoginReliefAccountActivity.class));

            } else if(!welcomeScreenShown){
               // System.out.println("welcomeScreenShown:"+welcomeScreenShown);
               // startActivity(new Intent(MainActivity.this, LoginReliefAccountActivity.class));
            }
        }
    });
}

}


0
投票

好。我在代码中犯了一个愚蠢的错误。我把SharedPreferences代码放在OnClickListener中。如果我反过来,那么如果sharedprefs boolean istrue,那么设置一个OnClickListener。

© www.soinside.com 2019 - 2024. All rights reserved.