如何创建采用Android preferences一次性欢迎屏幕? [英] How to create a one-time welcome screen using Android preferences?

查看:111
本文介绍了如何创建采用Android preferences一次性欢迎屏幕?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个屏幕,在应用程序启动后只显示一次。随后,那么它只会显示在主屏幕。我实现这一点的方法只是检查preferences并设置基于一个标志当前布局。是否有任何抽奖背上来实现这种方式?有没有更好的办法?

  @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        //这里是主要布局
        的setContentView(R.layout.main);

        米preFS = preferenceManager.getDefaultShared preferences(本);

        //第二个参数是默认情况下使用的preference无法找到
        布尔welcomeScreenShown = M prefs.getBoolean(welcomeScreenShown preF,假);

        如果(!welcomeScreenShown){
            //这里我设置的一次性布局
            的setContentView(R.layout.popup_message);
            共享preferences.Editor编辑= M prefs.edit();
            editor.putBoolean(welcomeScreenShown preF,真正的);
            editor.commit(); //非常重要,保存preference
        }
    }
 

解决方案

试着用应用程序版本code 。下面是我用一个例子code;

 共享preferences共享preferences = getShared preferences(版本,0);
    INT savedVersion code =共享preferences.getInt(版本code,0);

    INT appVershion code = 0;

    尝试 {
        。appVershion code = getPackageManager()getPackageInfo(getPackageName(),0).version code;

    }赶上(nnfe的NameNotFoundException){
        Log.w(TAG,$异常的appVershion code CAZ:+ nnfe);
    }

    如果(savedVersion code == appVershion code){
        Log.d(TAG,$$ savedVersion code == appVershion code);
    }其他{
        Log.d(TAG,$$ savedVersion code = appVershion code!);

        共享preferences.Editor共享preferencesEditor =共享preferences.edit();
        共享preferencesEditor.putInt(版本code,appVershion code);
        共享preferencesEditor.commit();

        构建alertDialogBu​​ilder =新生成器(本);
        alertDialogBu​​ilder.setTitle(版本);
        alertDialogBu​​ilder.setMessage(这是一次显示对话框);

        alertDialogBu​​ilder.setNeutralButton(关闭,新OnClickListener(){

            @覆盖
            公共无效的onClick(DialogInterface对话,诠释它){
                Log.d(TAG,$$的onClick);

            }
        });

        alertDialogBu​​ilder.show();
    }
 

I'd like to create a screen that only shows once after the application starts. Afterward, then it will only show the main screen. The way I implemented this was just to check the preferences and set the current layout based on a flag. Are there any draw backs to implementing it this way? Is there a better way?

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Here is the main layout
        setContentView(R.layout.main);      

        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);

        // second argument is the default to use if the preference can't be found
        Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false);

        if (!welcomeScreenShown) {
            //Here I set the one-time layout
            setContentView(R.layout.popup_message);             
            SharedPreferences.Editor editor = mPrefs.edit();
            editor.putBoolean(welcomeScreenShownPref, true);
            editor.commit(); // Very important to save the preference
        }
    }

解决方案

Try with Application version code. Below is an example code that I have used;

    SharedPreferences sharedPreferences = getSharedPreferences("version", 0);
    int savedVersionCode = sharedPreferences.getInt("VersionCode", 0);

    int appVershionCode = 0;

    try {
        appVershionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;

    } catch (NameNotFoundException nnfe) {
        Log.w(TAG, "$ Exception caz of appVershionCode : " + nnfe);
    }   

    if(savedVersionCode == appVershionCode){
        Log.d(TAG, "$$ savedVersionCode == appVershionCode");
    }else{
        Log.d(TAG, "$$ savedVersionCode != appVershionCode");

        SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
        sharedPreferencesEditor.putInt("VersionCode", appVershionCode);
        sharedPreferencesEditor.commit();

        Builder alertDialogBuilder = new Builder(this);
        alertDialogBuilder.setTitle("Version");
        alertDialogBuilder.setMessage("This is one time show dialog box ");

        alertDialogBuilder.setNeutralButton("Close", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d(TAG, "$$ onClick");

            }
        });

        alertDialogBuilder.show();
    }

这篇关于如何创建采用Android preferences一次性欢迎屏幕?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆