1

我的项目有一个登录页面。我的要求是,如果我登录后,该登录页面总是要登录。我通过谷歌得到了一些想法,即,它建议我使用共享偏好概念,现在我正在遵循这个概念,我已经尝试了一些代码。

在我的项目中,问题是在提供正确的用户名和密码后,它不会切换到另一个屏幕,同时我的日志猫也没有得到任何东西。如何实现这个概念?

建议请..

请找到我的参考资料

类 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();
        }
    }
}

结果活动.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);
        }
    });
}}

感谢您宝贵的时间!..

4

2 回答 2

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();
}
于 2012-10-06T07:38:08.253 回答
0

首先在 SharedPrefernce 文件中添加另一个字段作为密码。对用户名(在 setter 方法中将其设为字符串而不是布尔值)执行相同的操作,例如 setter 和 getter 方法。

创建一个从 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 方法中调用此方法。

希望它会帮助你。

于 2012-10-06T07:50:40.787 回答