共享偏好未保存或循环不起作用

时间:2017-09-18 19:01:08

标签: java android loops sharedpreferences shared

一些帮助是最值得感谢的。我有两个活动。 MainActivity和SharedPrefs。我希望应用程序处于打开状态,以查看是否存在一些保存的首选项。如果没有,它必须去另一个要求一些细节的活动。然后在按下提交按钮时,它必须保存共享首选项并转到MainActivity。但事实并非如此,它只是跳回到SharedPrefs活动。现在我不知道我的共享偏好是不是被保存了(我认为“editor.commit”会完成这项工作),或者我的循环是否有问题。我确实改变了我的循环,它正在反过来工作,但我可以把整个事情弄错,因为我对Android和Java很新。就像我说的,一些帮助将不胜感激。

这是我的MainActivity与我的循环:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SharedPreferences sharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
        boolean check = sharedPreferences.getBoolean("Check",false);
        if(!check){
            //Intent intent;
            Intent SharedPrefsIntent = new Intent(MainActivity.this, SharedPrefs.class);
            startActivity(SharedPrefsIntent); }
        else {
            setContentView(R.layout.activity_main);
            TextView brands = (TextView) findViewById(R.id.brands);
            brands.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent brandsIntent = new Intent(MainActivity.this, brands.class);
                startActivity(brandsIntent);
            }
        });
    }
}

这是我的SharedPrefs,我尝试将一些信息添加到共享首选项中:

public class SharedPrefs extends AppCompatActivity {
//public static Context context;
EditText ed1,ed2,ed3;
Button b1;

public static final String MyPREFERENCES = "MyPrefs" ;
public static final String Name = "nameKey";
public static final String Phone = "phoneKey";
public static final String Email = "emailKey";

SharedPreferences sharedpreferences;

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

    ed1=(EditText)findViewById(R.id.editText);
    ed2=(EditText)findViewById(R.id.editText2);
    ed3=(EditText)findViewById(R.id.editText3);

    b1=(Button)findViewById(R.id.button);
    sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();

            Toast.makeText(SharedPrefs.this,"Thanks",Toast.LENGTH_LONG).show();
            Intent BackToMainIntent = new Intent(SharedPrefs.this, MainActivity.class);
            startActivity(BackToMainIntent);
        }
    });
}

3 个答案:

答案 0 :(得分:1)

请添加"检查"设置所需值后,SharedPreferences的键值,因为它总是在MainActivity上返回false。

您也可以使用.apply()代替.commit()。

答案 1 :(得分:0)

看起来您在第二个活动中的任何位置都保存了布尔Check。因此,在您的第一个活动中,此布尔值永远不存在,并且您将获得已设置为false的默认值。你需要一个名为`Check'在第二次活动中设置为true。

答案 2 :(得分:0)

在您的SharedPrefs活动中 改变你的这段代码

        editor.putString(Name, n);
        editor.putString(Phone, ph);
        editor.putString(Email, e);
        editor.commit();

使用

        editor.putString(Name, n);
        editor.putString(Phone, ph);
        editor.putString(Email, e);
        editor.putBooleon (Check,true);
        editor.commit();

然后它会按你的意愿工作。

快乐编码:)