2012-10-06 74 views
1

我有一個登錄頁面,我的project.Here我的要求是,該登錄頁面總是希望能夠登錄,如果一旦我登錄in.I已經得到通過谷歌,即一些想法,就推薦我使用共享-preference的概念,現在我正在遵循這個概念,我已經嘗試了一些代碼。如何創建一個登錄頁面,如果一旦登錄就一直登錄?

在我的項目的問題是給正確的用戶名和密碼後,就不能切換到另一個屏幕,在我得到我的日誌貓too.How沒有達到這個概念一樣嗎?

建議請..

請找我的消息來源參考

類SaveSharedPreferece

public class SaveSharedPreference 
{ 
static final String PREF_USER_NAME= "username"; 

static SharedPreferences getSharedPreferences(Context ctx) { 
    return PreferenceManager.getDefaultSharedPreferences(ctx); 
} 

public static void setUserName(Context ctx, boolean userName) 
{ 
    Editor editor = getSharedPreferences(ctx).edit(); 
    editor.putBoolean(PREF_USER_NAME, userName); 
    editor.commit(); 
} 

public static String getUserName(Context ctx) 
{ 
    return getSharedPreferences(ctx).getString(PREF_USER_NAME, ""); 
}} 

MainActivity.java

public class MainActivity extends Activity 
{ 
Button btn; 
EditText edt1,edt2; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void loginpage() 
{ 
    edt1 = (EditText)findViewById(R.id.editText_username); 
    edt2 = (EditText)findViewById(R.id.editText_password); 

    btn = (Button)findViewById(R.id.button_login); 
    btn.setOnClickListener(new View.OnClickListener() 
    { 

@Override 
public void onClick(View v) 
{ 
    if(edt1.getText().toString().length()!=0 && edt1.getText().toString().length()!=0) 
    { 
     Intent intvar = new Intent(v.getContext(), ResultActivity.class); 
     startActivity(intvar); 
    } 
    else 
    { 
    Toast.makeText(getApplicationContext(), "oops! empty..", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

if(SaveSharedPreference.getUserName(MainActivity.this).length() == 0) 
{ 
    // call Login Activity 
    loginpage(); 
    } 
else 
{ 
    // Call Next Activity 

} 

if (getIntent().getBooleanExtra("EXIT", false)) 
{ 
    finish(); 
     } 
    } 
} 

ResultActivity.java

public class ResultActivity extends Activity 
{ 

Button btn_exit; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main1); 

    btn_exit = (Button)findViewById(R.id.button_exit); 
    btn_exit.setOnClickListener(new View.OnClickListener() 
    { 

    @Override 
    public void onClick(View v) 
    { 
     Intent intent = new Intent(ResultActivity.this, MainActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.putExtra("EXIT", true); 
     startActivity(intent); 
     } 
    }); 
}} 

感謝您的寶貴時間!..

+0

檢查我的[答] [1]此相同.... [1]:http://stackoverflow.com/questions/12639899/shared-preferences-in-android/12640108# 12640108 –

回答

0

要保存布爾值SharedPreferences並獲得字符串。這怎麼可能。

更好地節省並獲得無論是布爾或字符串。

如下變化SaveSharedPreference類的setUserName()代碼和它的作品

public static void setUserName(Context ctx, String userName) 
{ 
    Editor editor = getSharedPreferences(ctx).edit(); 
    editor.putString(PREF_USER_NAME, userName); 
    editor.commit(); 
} 
0

首先在SharedPrefernce文件添加一個字段作爲密碼。像setter和getter方法一樣,不管你做了什麼與用戶名(使用setter方法中的字符串而不是布爾值)做同樣的事情。

創建一個方法,它將從sharedPrefernce這樣獲取的值:

private void validateUser(){ 
String username = SaveSharedPreference.getUserName(MainActivity.this); 
String password = SaveSharedPreference.getPassword(MainActivity.this); 
if (check_for_any_condition){ 
    Intent intvar = new Intent(v.getContext(), ResultActivity.class); 
    startActivity(intvar); 
} 
} 

調用此方法在您的onCreate方法。

希望它會幫助你。

相關問題