0
我正在使用Parse.com,我的應用應該讓用戶註冊並登錄。他們能夠註冊,在這一點上,我發現他們存儲在Parse數據庫中,但是當我嘗試在登錄活動中使用相同的用戶名和密碼時,它說它不存在。用戶註冊後,它會進入MainActivity,直到您註銷,然後您無法重新登錄。任何幫助?無法使用Parse登錄的用戶
這是我的註冊活動
public class SignupActivity extends ActionBarActivity {
EditText mName, mUsername, mEmail, mPassword, mPasswordConfirm;
Button mSignup, mCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_signup);
getActionBar().setDisplayHomeAsUpEnabled(true);
mName = (EditText) findViewById(R.id.name);
mUsername = (EditText) findViewById(R.id.username);
mEmail = (EditText) findViewById(R.id.email);
mPassword = (EditText) findViewById(R.id.password);
mPasswordConfirm = (EditText) findViewById(R.id.confirm_password);
mSignup = (Button) findViewById(R.id.signup_button);
mSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String username = mUsername.getText().toString().trim();
final String email = mEmail.getText().toString().trim();
final String password = mPassword.getText().toString().trim();
final String confirmedPassword = mPasswordConfirm.getText().toString().trim();
final String name = mName.getText().toString().trim();
if(username.isEmpty() || email.isEmpty() || password.isEmpty()){
AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
builder.setMessage("Item missing in Signup Fields")
.setPositiveButton("Ok", null)
.setTitle("Error Message");
AlertDialog dialog = builder.create();
dialog.show();
}
else if(!confirmPass(password, confirmedPassword)){
AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
builder.setMessage("Passwords do not match")
.setPositiveButton("Ok", null)
.setTitle("Error Message");
AlertDialog dialog = builder.create();
dialog.show();
}
else{
ParseUser user = new ParseUser();
user.setUsername(username);
user.setPassword(password);
user.setEmail(email);
user.put("Name", name);
setProgressBarIndeterminateVisibility(true);
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
setProgressBarIndeterminate(false);
if(e == null){
Intent intent = new Intent(SignupActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
else{
AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
builder.setMessage(e.getMessage())
.setTitle("Error Message")
.setPositiveButton("Ok", null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
}
});
}
public boolean confirmPass(String password, String passwordConfirm){
if(password.equals(passwordConfirm)){
return true;
}
else return false;
}
}
這裏是我的LoginActivity 公共類LoginActivity擴展ActionBarActivity {
EditText mUsername, mPassword;
Button mLogin;
TextView mSignup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Allows us to use progress circle
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_login);
//hides action bar
getActionBar().hide();
mUsername = (EditText) findViewById(R.id.username);
mPassword = (EditText) findViewById(R.id.password);
mLogin = (Button) findViewById(R.id.sign_in);
mSignup = (TextView) findViewById(R.id.sign_up);
//goes to signup page when clicked
mSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this, SignupActivity.class);
startActivity(intent);
}
});
//logs user in when clicked
mLogin.setOnClickListener(new View.OnClickListener() {
String username = mUsername.getText().toString().trim();
String password = mPassword.getText().toString().trim();
//checks to make sure user exists or doesn't exist to sign them in
@Override
public void onClick(View v) {
ParseUser.logInInBackground(username, password, new LogInCallback() {
//if user exists, do this
@Override
public void done(ParseUser user, ParseException e) {
if(e == null){
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
Toast.makeText(LoginActivity.this, (CharSequence) user, Toast.LENGTH_LONG);
//makes sure you can't press "back" in the next activity and come back to Login page
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
//if user doesn't exist, show error message
else{
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage((CharSequence) username)
.setPositiveButton("Ok", null)
.setTitle("Error Message");
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
});
}
}
這裏是我的MainActivity 公共類MainActivity延伸ListActivity {
ParseQueryAdapter<ParseObject> mainAdapter;
CustomAdapter customAdapter;
ListView listView;
TextView ideaTitle;
ImageView icon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ideaTitle = (TextView) findViewById(R.id.title);
icon = (ImageView) findViewById(R.id.icon);
ParseUser currentUser = ParseUser.getCurrentUser();
if(currentUser == null){
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}else {
Log.i("USERNAME", currentUser.getUsername());
customAdapter = new CustomAdapter(this);
listView = (ListView) findViewById(android.R.id.list);
listView.setAdapter(customAdapter);
}
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
//get selected items
System.out.println(l);
System.out.println(v);
System.out.println(position);
System.out.println(id);
Toast.makeText(MainActivity.this, (int) position, Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch(id){
case R.id.add_idea:
Intent add = new Intent(MainActivity.this, AddIdeaActivity.class);
startActivity(add);
break;
case R.id.logout:
ParseUser.logOut();
Intent logout = new Intent(MainActivity.this, LoginActivity.class);
logout.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
logout.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(logout);
break;
}
return super.onOptionsItemSelected(item);
}
}