条件在sharedpreferences android中不起作用

时间:2017-10-10 07:49:01

标签: android sharedpreferences

我有一个登录页面,所以我正在使用SharedPreferences。我想节省价值。 没有值,它不应该转到另一个Activity,因为我在登录页面中给出了这个:

 if((spf != null) && (spv !=null) && (et1v != null) && (et2v != null) && (et3v != null) &&

             (sp != null) && (et1 != null) && (et2 != null) && (et3 != null)){

            finish();
            Intent i = new Intent(Login.this,Welcome.class);
            startActivity(i);
     }
       else{
           btn1.setOnClickListener(
                   new View.OnClickListener() {
                       @Override
                       public void onClick(View view) {

                           if (sp.getSelectedItem().toString().length() > 0 &&
                                   et1.getText().toString().length() > 0 &&
                                   et2.getText().toString().length() > 0 &&
                                   et3.getText().toString().length() > 0 )

                           {
                               SharedPreferences spf = getSharedPreferences("newprfs", Context.MODE_PRIVATE);
                               SharedPreferences.Editor spe = spf.edit();
                               spe.putString("uname",sp.getSelectedItem().toString());
                               spe.putString("password",et1.getText().toString());
                               spe.putString("mobile",et2.getText().toString());
                               spe.putString("dept",et3.getText().toString());

                               spe.commit();

                               finish();
                               Intent i = new Intent(Login.this,Welcome.class);
                               startActivity(i);
                           }
                       }
                   }
           );
        }

这是我的欢迎页面

SharedPreferences spf = getSharedPreferences("newprfs", Context.MODE_PRIVATE);
        SharedPreferences.Editor spe = spf.edit();
        String spv = spf.getString("uname","");
        String et1v = spf.getString("password","");
        String et2v = spf.getString("mobile","");
        String et3v = spf.getString("dept","");

        if((spe != null) && (spv !=null) && (et1v != null) && (et2v != null) && (et3v != null) &&
                (sp != null) && (et1 != null) && (et2 != null) && (et3 != null)){
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                    Intent i = new Intent(Welcome.this,MainActivity.class);
                    startActivity(i);
                    Welcome.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);
    }
        else{
            Intent i = new Intent(Welcome.this,Login.class);
            startActivity(i);
            Welcome.this.finish();
        }
    }       

问题在于它始终显示空白屏幕。我试着用Log.d("@@@@@@@@@@@@@@Loginpage@@@@@@@@@@@@@@@@")检查; 所以我总是在登录页面中认识到它的加载并且if condition无法正常工作..任何人都可以在if Condition..中向我提出错误吗?

更新 这里没有共享Prefs的问题..但这里是条件问题...

我没有输入值的If Condition它不应该移动到下一个...而且如果值已经定义过,它应该移到下一页...

所以它移动到下一页和下一页同样发生因为我已经给出相同的条件而且它再次移动到登录页面。所以它停留在单页面上,我得到了空白屏幕。

1 个答案:

答案 0 :(得分:0)

您需要尝试使用contains(String Key)

试试这个spv.contains("uname")代替(spv !=null)spv.equals("")我也面临这个问题更好地使用Hashmap ...但这适用于您的案例..