打开的时候,帐号和密码都有了(已经记住之前输入的),登录之后,按下返回键,但是密码和账户都不见了,只有退出应用后重新打开才会有是什么原因呢?真是百思不得其解
pref= PreferenceManager.getDefaultSharedPreferences(this);//静态方法
        //pref=getPreferences(0);
        zhanghaoshuru=(EditText)findViewById(R.id.zhanghaoshuru);
        mimashuru  =(EditText)findViewById(R.id.mimashuru);
        denglu=(Button)findViewById(R.id.denglu) ;
        jizhumima =(CheckBox)findViewById(R.id.jizhumima);boolean is=pref.getBoolean("data",false);
        if( is){
    String a=pref.getString("zhanghaoshuru","");
    String b =pref.getString("mimashuru","");
    zhanghaoshuru.setText(a);
     mimashuru.setText(b);
            jizhumima.setChecked(true);
}    else{}
        denglu.setOnClickListener(new View.OnClickListener() {
        @SuppressLint("ShowToast")
        @Override
        public void onClick(View view) {
            String a=zhanghaoshuru.getText().toString();
            String b=mimashuru.getText().toString();
            if(a.trim().equals("admin")&&b.trim().equals("admin")){
             editor=pref.edit();
                if(jizhumima.isChecked()){
                  editor.putBoolean("data",true) ;
                  editor.putString( "zhanghaoshuru" ,  a );
                  editor.putString( "mimashuru" ,  b  );
                }
                else {
                    editor.putBoolean("data",false) ;
                    editor.clear();                }editor.apply();
                Intent intent=new Intent(denglumima.this,MainActivity.class);
                startActivity(intent);

解决方案 »

  1.   

    登录之后,进入主界面,然后按下返回键,又回到登录界面,这个时候,帐号和密码都不见了,除非结束app的运行,然后重新打开,帐号密码都有,也就是说,打开app是进入登录界面,帐号密码都会存在,但是登录进去之后,,进入主界面,在按back键回到登录界面,这个时候帐号和密码都没有了,这样说能明白了吗?
      

  2.   

    public class MainActivity extends Activity {
    EditText zhanghaoshuru,mimashuru;
    Button denglu;
    CheckBox jizhumima;
    SharedPreferences pref;
    SharedPreferences.Editor editor;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            pref= PreferenceManager.getDefaultSharedPreferences(this);//静态方法
          //pref=getPreferences(0);
           zhanghaoshuru=(EditText)findViewById(R.id.zhanghaoshuru);
           mimashuru =(EditText)findViewById(R.id.mimashuru);
           denglu=(Button)findViewById(R.id.denglu) ;
           jizhumima =(CheckBox)findViewById(R.id.jizhumima);      boolean is=pref.getBoolean("data",false);
           if( is){
           String a=pref.getString("zhanghaoshuru","");
           String b =pref.getString("mimashuru","");
           zhanghaoshuru.setText(a);
           mimashuru.setText(b);
           jizhumima.setChecked(true);
           }
          else{
              denglu.setOnClickListener(new View.OnClickListener() {
              @SuppressLint("ShowToast")
              @Override
              public void onClick(View view) {
                  String a=zhanghaoshuru.getText().toString();
                  String b=mimashuru.getText().toString();
                  if(a.trim().equals("admin")&&b.trim().equals("admin")){
                   editor=pref.edit();
                      if(jizhumima.isChecked()){
                        editor.putBoolean("data",true) ;
                        editor.putString( "zhanghaoshuru" ,  a );
                        editor.putString( "mimashuru" ,  b  );
                      }
                      else {
                          editor.putBoolean("data",false) ;
                          editor.clear();                  }editor.apply();
                      Intent intent=new Intent(MainActivity.this,denglumima.class);
                      startActivity(intent);
        }
              }
              });
          }
        }
       
    }
      
      

  3.   

    我按照楼主的代码敲打了一遍,然后运行,发现第一次跳转成功登录后按返回键帐号和密码仍然存在,退出app后再重新打开app帐号和密码仍然存在,
    可这时想要按登录按钮却一点反应都没有,没跳转
      

  4.   

    也就是说,账号和密码其实是保存下来了,但是没有关联到back后的表单里面,须要重启程序才会加载进来。
      

  5.   

    登录成功后,如果你没有把登录界面finish()掉,它仍然存在栈底部,好像是处于onPause()还是onStop()状态,你点击返回的的时候直接finish()的操作,会把栈底的登录界面显示上来。你可以尝试在onResume()中去拿SharedPreferences的数据,或者设置登录界面的启动方式为singtask,在点击返回的时候执行跳转(Intent)再finish()。
      

  6.   

    在onResume中设置显示密码和账号