2012-06-11 66 views
0

我開發一個應用程序中,我需要管理用戶的會話即當在第一次用戶登錄,他必須看到登錄頁面,一旦他被認證,他將被重定向到主屏幕和在共享首選項中設置一個值。現在,當用戶點擊退出按鈕在主屏幕上shsredpreferences的值必須被清除,下一次用戶打開他必須直接登錄page.Unless應用程序,直到用戶點擊註銷他一定不會顯示在登錄頁面。 我能夠存儲在sharedpreferences值,但無法將其刪除。值不被清除

這裏是我的loginpage.java

package com.sess.eg; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 


public class loginpage extends Activity { 
    /** Called when the activity is first created. */ 


     EditText acc,user,pin; 
     Button login; 
     StringBuilder builder = new StringBuilder(); 
     String UserName; 

     SharedPreferences.Editor prefs; 
     @Override 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 


//   SharedPreferences prefs1 = getPreferences(MODE_WORLD_READABLE); 
//   UserName= prefs1.getString("User", "Abcdef"); 
//   
//   System.out.println(UserName); 
//   
//   if(UserName.equals("Ad")) 
//    
//   { 
//    System.out.println(UserName); 
//    Intent i=new Intent(loginpage.this,homepage.class); 
//    startActivity(i); 
//   } 

      setContentView(R.layout.main); 
      acc = (EditText) findViewById(R.id.ed_login_acc); 
      user = (EditText) findViewById(R.id.ed_user_acc); 
      pin = (EditText) findViewById(R.id.ed_pin_acc); 
      login = (Button) findViewById(R.id.login_button); 

      SharedPreferences prefs1 = getPreferences(MODE_WORLD_READABLE); 

      login.setOnClickListener(new Button.OnClickListener(){ 

       public void onClick(View v) { 




        prefs.putString("User", "Ad"); 
        prefs.commit(); 
        //System.out.println(sendJson1()); 
        //startService(new Intent(Login.this, MyService.class)); 
        Intent i = new Intent(loginpage.this, homepage.class); 
        startActivity(i); 
        finish(); 

        //System.out.println(UserName); 
       } 

      }); 



     } 
     @Override 
     protected void onStart() { 
      SharedPreferences prefs1 = getPreferences(MODE_WORLD_READABLE); 
      UserName= prefs1.getString("User", "Abcdef"); 

      System.out.println(UserName); 

      if(UserName.equals("Ad")) 

      { 
       System.out.println(UserName); 
       Intent i=new Intent(loginpage.this,homepage.class); 
       startActivity(i); 
       finish(); 

      } 
      super.onStart(); 
     } 
    } 


here is my code for homepage.java 
package com.sess.eg; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class homepage extends Activity{ 

    Button logout; 

    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.home3); 

      logout = (Button) findViewById(R.id.logout); 

      logout.setOnClickListener(new Button.OnClickListener(){ 

      public void onClick(View v) { 

      SharedPreferences.Editor prefs = getPreferences(MODE_WORLD_WRITEABLE).edit(); 


      prefs.clear(); 

//   prefs.commit(); 
      SharedPreferences prefs1 = getPreferences(MODE_WORLD_READABLE); 
      String UserName= prefs1.getString("User", "Abcdef"); 
      System.out.println(UserName); 
      finish(); 

       } 
      }); 

} 
} 
+0

[讓我爲你做嗎?](http://samir-mangroliya.blogspot.in/p/android-shared-preferences.html) –

+0

感謝samir的回覆它將值保存在sharedpreferences中並維護會話,但是如何在用戶點擊註銷時清除sharedpreferences中的值? –

+0

閱讀明文數據 –

回答

0

在您的代碼:

//prefs.commit(); 

改變這一點。從評論中刪除它。

prefs.commit(); 

commit()被調用來保存您的首選項更改。

提交您的喜好從這個編輯器更改回SharedPreferences對象是編輯。這種原子執行所要求的修改,替換目前無論是在SharedPreferences。 注意,當兩個編輯在同一時間修改偏好,最後一個要求提交勝利

閱讀here

+0

我這樣做,但還是堅持價值。 –

+0

發佈您的修改代碼。這對我來說可以。 –

+0

將ü請粘貼代碼,您修改怎麼一回事,因爲我做了很多我的代碼更改,而不進行備份 –

0

你註釋掉調用prefs.commit()代碼。取消註釋它們。