如何进行登录问候(toast),并且在用户登录时不必再次键入

时间:2014-01-31 15:47:18

标签: android

我想使用共享首选项制作用户登录详细信息。

当我加载应用程序时,将出现一个登录页面。输入后,它会向用户致敬,例如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);
         }

2 个答案:

答案 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)

我认为你从不同的活动中关闭了应用程序,所以当你重新启动时,你开始了最后一次活动