如果登录后始终如何创建登录页面?

时间:2012-10-06 07:34:05

标签: android login-page

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

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

建议请..

请找我的参考资料

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

感谢您宝贵的时间!..

2 个答案:

答案 0 :(得分:0)

您正在将布尔值保存到SharedPreferences并获取String。怎么可能。

最好保存并获取布尔值或字符串。

在SaveSharedPreference类中更改setUserName()代码,如下所示,它可以正常工作

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

答案 1 :(得分:0)

首先在SharedPrefernce文件中添加另一个字段作为密码。无论你做了什么foe用户名(在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方法中调用此方法。

希望它会对你有所帮助。