繁体   English   中英

设置SharedPreferences以保存Switch语句的大小写

[英]Set SharedPreferences to save Switch Statement Case

我真的很困惑要保存我的Switch语句,所以当显示为VISIBLE的游戏重新打开按钮为“保存”时,我就用SharedPreferences进行一些编码

f1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v){
                    // TODO Auto-generated method stub
                    Intent level1 = new Intent ();
                    level1.setClassName ("com.example.game", "com.example.game.levelone");
                    startActivityForResult (level1, 0);              
                }             
            });     
        }   

    public void onActivityResult (int requestCode, int resultCode, Intent level1){
    super.onActivityResult (requestCode, resultCode, level1); 

        f2=(Button)findViewById(R.id.f2);      
        f2lock=(ImageView)findViewById(R.id.f2lock);
        SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
        SharedPreferences.Editor editor = resultCode.edit(); 
        editor.putBoolean("IsFinished", true);
        editor.commit();

    boolean resultcode = preferences.getBoolean("IsFinished", true);


        switch (resultCode) {
        case 2:  f2.setVisibility(View.VISIBLE);
                 f2lock.setVisibility(View.GONE);            
        }      

在不同的行上有一个错误

首先在SharedPreferences.Editor editor = resultCode.edit();

我收到此错误无法在原始类型int上调用edit()

其次, boolean resultcode = preferences.getBoolean("IsFinished", true);

我有两个这样的错误

首选项无法解析,并且局部变量重复

谁能帮助我修复代码或提供其他解决方案代码来保存Switch语句?

错误编号:1

您的代码中有一个错字。 注意resultCode.edit()C

更换

    SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
    SharedPreferences.Editor editor = resultCode.edit(); 

    SharedPreferences resultcode = getSharedPreferences("preferences", MODE_PRIVATE);
    SharedPreferences.Editor editor = resultcode.edit(); 

实际上,在您的代码中,它是resultcode ,它是SharedPreference ,但是您在resultCode上调用了edit()

错误:2

我认为您正在尝试获取存储在SharedPreference中的布尔值。 为此,您在做什么是错误的。

应该做如下

boolean result = resultcode.getBoolean("IsFinished", true);

实际上,它是resultcode ,它引用Java类中的SharedPreference而不是preferences preferences只是为保存在本地设备中的xml文件指定的名称。

请在文档中查看有关SharedPreferences的更多详细信息。

正如拉尔所说,您有错字。 就个人而言,我更喜欢单键SharedPreferences ,其键String作为类顶部的private static String

下面的代码来自我的一个项目

private static final String KEY_ISFINISHED = "prefs_isfinished";

PreferenceManager.getDefaultSharedPreferences(context)
                .edit().putBoolean(KEY_ISFINISHED, myboolean).commit();

使用此代码,您可以最大程度地减少错别字。 除了代码拼写错误外,键中的拼写错误还会确保您的首选项不会正确保存/检索,这就是为什么我“主张”使用static String 您还将从我的链接中注意到,我所有的首选项都由一个类管理,这意味着我不必在其他类中重复代码来检索/存储特定的首选项。 一般来说,更少的代码==更少的错误机会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM