我想使用共享首选项制作用户登录详细信息。
当我加载应用程序时,将出现一个登录页面。输入后,它会向用户致敬,例如welcome [username]。当用户再次登录时,它将向欢迎回复[用户名]的消息。用户无需再次键入他/她的名称即可进入应用程序。事实上,当用户点击登录时,它会向欢迎回来[用户名],他/她可以继续申请。
但是,在我的代码中,它只是跳过登录页面,并没有为名称干杯。 我做了一个log.d但没有出现在我的logcat中。 有人可以帮帮我吗?
我认为我的检索首选项有些不对,但我不知道如何编辑它,我是android的新手。
这是我的代码:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
username =(EditText)findViewById(R.id.nameEditText);
loginbutton = (Button)findViewById(R.id.loginBTN);
loginbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getApplicationContext(),homeActivity.class);
startActivity(intent);
Bundle extras = new Bundle();
extras.putString("name",username.getText().toString());
intent.putExtras(extras);
startActivityForResult(intent, request_Code);
}
});
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
saveAsPreferences();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
retrievePreferences();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
public void saveAsPreferences() {
String name = username.getText().toString();
SharedPreferences prefs = getSharedPreferences("preferences",
MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("name", name);
editor.commit();
}// saveAsPreferences
public void retrievePreferences() {
SharedPreferences prefs = getSharedPreferences("preferences",
MODE_PRIVATE);
if (prefs.contains("name")) {
String name = prefs.getString("name", "");
Log.d("Login","name : "+name);
username.setText(name);
Toast.makeText(getApplicationContext(), "welcome" + name, Toast.LENGTH_SHORT).show();
Intent intent=new Intent(getApplicationContext(),homeActivity.class);
startActivity(intent);
}
else
{
if (prefs.contains("name")) {
String name = prefs.getString("name", "");
Log.d("ELSE","name : "+name);
username.setText(name);
}
}
}
}
hom.java
public class homeActivity extends Activity{
Button btnLogIn;
Button btnAbout;
TextView name;
final Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.homescreen);
name = (TextView) findViewById(R.id.name);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
String username = extras.getString("name");
name.setText(username);
}
答案 0 :(得分:0)
我查看了您的代码。为什么您在onClickListener
开始两次Home活动?
Intent intent=new Intent(getApplicationContext(),homeActivity.class);
startActivity(intent);
Bundle extras = new Bundle();
extras.putString("name",username.getText().toString());
intent.putExtras(extras);
startActivityForResult(intent, request_Code);
您已使用startActivity(intent);
然后使用startActivityForResult(intent, request_Code);
启动它。我猜这会导致问题。
答案 1 :(得分:0)
我认为你从不同的活动中关闭了应用程序,所以当你重新启动时,你开始了最后一次活动