2012-09-05 55 views
1

我一直在試圖在我的登錄屏幕中添加一個記住我的功能。 但不知何故,它不保存我的登錄憑據?Android:記住我不工作

有人可以告訴我我做錯了什麼嗎?

我還在學習,所以如果有人有一些指針繼續前進,讓我開心:d

這是我的代碼

public class WvvZondag extends Activity { 

    EditText un,pw; 
    TextView error; 
    Button ok, cancel; 
    CheckBox checkbox; 
    private String username, password; 
    private SharedPreferences loginPreferences; 
    private SharedPreferences.Editor loginPrefsEditor; 
    private Boolean saveLogin; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     if (android.os.Build.VERSION.SDK_INT > 9) { 
      StrictMode.ThreadPolicy policy = 
       new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
     } 


     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_wvv_zondag); 
     un=(EditText)findViewById(R.id.username); 
     pw=(EditText)findViewById(R.id.password); 
     ok=(Button)findViewById(R.id.login_button); 
     cancel=(Button)findViewById(R.id.cancel_button); 
     error=(TextView)findViewById(R.id.error); 
     checkbox=(CheckBox)findViewById(R.id.checkBox1); 
     loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE); 
     loginPrefsEditor = loginPreferences.edit(); 

     saveLogin = loginPreferences.getBoolean("saveLogin", false); 
     if (saveLogin == true){ 
      un.setText(loginPreferences.getString("un", "")); 
      pw.setText(loginPreferences.getString("pw", "")); 
      checkbox.setChecked(true); 
     } 

     cancel.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       finish(); 
      } 
     }); 

     ok.setOnClickListener(new View.OnClickListener() { 

      @Override 

      public void onClick(View v) { 
       username = un.getText().toString(); 
       password = pw.getText().toString(); 

       if (checkbox.isChecked()) { 
        loginPrefsEditor.putBoolean("saveLogin", true); 
        loginPrefsEditor.putString("username", username); 
        loginPrefsEditor.putString("password", password); 
        loginPrefsEditor.commit(); 

        // TODO Auto-generated method stub 
        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
        postParameters.add(new BasicNameValuePair("username", username)); 
        postParameters.add(new BasicNameValuePair("password", password)); 

       String response = null; 

       try { 
        response = CustomHttpClient.executeHttpPost("http://www.wvvzondag2.nl/android/check.php", postParameters); 

        String res=response.toString(); 

        res = res.replaceAll("\\s+", ""); 

        if(res.equals("1")){ 
         Intent loginintent = new Intent(WvvZondag.this, Menu_show.class); 
         startActivity(loginintent); 
        } 
        else 
         error.setText("Gebruikersnaam en/of wachtwoord is incorrect"); 

       } catch (Exception e) { 
        un.setText(e.toString()); 
       } 
       } else { 
        loginPrefsEditor.clear(); 
        loginPrefsEditor.commit(); 
       } 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_wvv_zondag, menu); 
     return true; 
    } 

    public boolean onOptionsItemSelected(MenuItem item){ 
     switch (item.getItemId()){ 
     case R.id.menu_website: 
      startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.wvvzondag2.nl"))); 
      return true; 
     } 

     return false; 
    } 
} 

回答

2

你不應該使用這個檢索信息?

un.setText(loginPreferences.getString("username", "")); 
    pw.setText(loginPreferences.getString("password", "")); 
+0

感謝您的快速反應:)但現在如果我取消選中我的複選框,那麼它不能再登錄,但我認爲這是因爲我創建了一個if語句並沒有在我的其他語句中做任何事 –

+0

是的,你也需要編寫else部分。 – Swayam