Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Firebase';使用较新的布局进行身份验证?_Android_Firebase_Firebase Authentication - Fatal编程技术网

Android 使用Firebase';使用较新的布局进行身份验证?

Android 使用Firebase';使用较新的布局进行身份验证?,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我已经设置了我的用户注册活动。访问用户数据以检查是否使用我的登录活动,这是一个简单但很好的做法。下面是我的注册活动。如果您能帮助我了解如何进行注册,或对我的注册活动进行任何可能的改进/更正,我们将不胜感激 SignupActivity.java package test.calendar; import android.app.ProgressDialog; import android.os.Bundle; import android.support.annotation.NonNull;

我已经设置了我的用户注册活动。访问用户数据以检查是否使用我的登录活动,这是一个简单但很好的做法。下面是我的注册活动。如果您能帮助我了解如何进行注册,或对我的注册活动进行任何可能的改进/更正,我们将不胜感激

SignupActivity.java

package test.calendar;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import butterknife.Bind;
import butterknife.ButterKnife;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;


public class SignupActivity extends AppCompatActivity {
private static final String TAG = "SignupActivity";


//BIND VIEWS
@Bind(R.id.input_name) EditText _nameText;
@Bind(R.id.input_email) EditText _emailText;
@Bind(R.id.input_password) EditText _passwordText;
@Bind(R.id.btn_signup) Button _signupButton;
@Bind(R.id.link_login) TextView _loginLink;


// [START declare_auth]
private FirebaseAuth mAuth;
// [END declare_auth]

// [START declare_auth_listener]
private FirebaseAuth.AuthStateListener mAuthListener;
// [END declare_auth_listener]

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    ButterKnife.bind(this);
    //BUTTERKNIFE
    _signupButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signup();
        }
    });

    _loginLink.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Finish the registration screen and return to the Login activity
            finish();
        }
    });

    // [START initialize_auth]
    mAuth = FirebaseAuth.getInstance();
    // [END initialize_auth]

    // [START auth_state_listener]
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
            }
            // [START_EXCLUDE]
            //updateUI(user);
            // [END_EXCLUDE]
        }
    };
    // [END auth_state_listener]
}


// [START on_start_add_listener]
@Override
public void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);
}
// [END on_start_add_listener]

// [START on_stop_remove_listener]
@Override
public void onStop() {
    super.onStop();
    if (mAuthListener != null) {
        mAuth.removeAuthStateListener(mAuthListener);
    }
}
// [END on_stop_remove_listener]


public void signup() {
    Log.d(TAG, "Signup");

    if (!validate()) {
        onSignupFailed();
        return;
    }

    _signupButton.setEnabled(false);

    final ProgressDialog progressDialog = new ProgressDialog(SignupActivity.this,
            R.style.AppTheme_Dark_Dialog);
    progressDialog.setIndeterminate(true);
    progressDialog.setMessage("Creating Account...");
    progressDialog.show();

    String name = _nameText.getText().toString();
    String email = _emailText.getText().toString();
    String password = _passwordText.getText().toString();

    // TODO: Implement your own signup logic here.


    // [START sign_in_with_email]
    mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful());

                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state listener will be notified and logic to handle the
                    // signed in user can be handled in the listener.
                    if (!task.isSuccessful()) {
                        Log.w(TAG, "signInWithEmail", task.getException());
                        Toast.makeText(getApplicationContext(), "Authentication failed.",
                                Toast.LENGTH_SHORT).show();  //TODO: Is this the right toast?
                    }

                    // [START_EXCLUDE]
                    progressDialog.dismiss();
                    // [END_EXCLUDE]
                }
            });
    // [END sign_in_with_email]
}


//        new android.os.Handler().postDelayed(
//                new Runnable() {
//                    public void run() {
//                        // On complete call either onSignupSuccess or onSignupFailed
//                        // depending on success
//                        onSignupSuccess();
//                        // onSignupFailed();
//                        progressDialog.dismiss();
//                    }
//                }, 3000);
//    }



public void onSignupSuccess() {
    _signupButton.setEnabled(true);
    setResult(RESULT_OK, null);
    finish();
}

public void onSignupFailed() {
    Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();

    _signupButton.setEnabled(true);
}

public boolean validate() {
    boolean valid = true;

    String name = _nameText.getText().toString();
    String email = _emailText.getText().toString();
    String password = _passwordText.getText().toString();

    if (name.isEmpty() || name.length() < 3) {
        _nameText.setError("at least 3 characters");
        valid = false;
    } else {
        _nameText.setError(null);
    }

    if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
        _emailText.setError("enter a valid email address");
        valid = false;
    } else {
        _emailText.setError(null);
    }

    if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
        _passwordText.setError("between 4 and 10 alphanumeric characters");
        valid = false;
    } else {
        _passwordText.setError(null);
    }

    return valid;
}
package test.calendar;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
进口毛刀。装订;
进口毛刀,毛刀;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.AuthResult;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
公共类注册活动扩展了AppCompatActivity{
私有静态最终字符串TAG=“SignupActivity”;
//绑定视图
@绑定(R.id.input\u name)编辑文本\u nameText;
@绑定(R.id.input\u email)编辑文本\u emailText;
@Bind(R.id.input_password)EditText_passwordText;
@绑定(R.id.btn_signup)按钮_signup按钮;
@绑定(R.id.link\u login)文本视图\u loginLink;
//[开始声明\u验证]
私人消防队;
//[结束声明授权]
//[启动声明\u验证\u侦听器]
私有FirebaseAuth.AuthStateListener mAuthListener;
//[结束声明\u验证\u侦听器]
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
把(这个)绑起来;
//毛刀
_signupButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
注册();
}
});
_loginLink.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//完成注册屏幕并返回登录活动
完成();
}
});
//[开始初始化\u验证]
mAuth=FirebaseAuth.getInstance();
//[结束初始化\u验证]
//[启动身份验证状态侦听器]
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null){
//用户已登录
Log.d(标记为“+user.getUid()”);
}否则{
//用户已注销
Log.d(标记“onAuthStateChanged:signed_out”);
}
//[开始时不包括]
//updateUI(用户);
//[完]
}
};
//[结束身份验证状态侦听器]
}
//[启动\u启动\u添加\u侦听器]
@凌驾
public void onStart(){
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
//[结束于\u开始\u添加\u侦听器]
//[启动\u停止\u删除\u侦听器]
@凌驾
公共void onStop(){
super.onStop();
if(mAuthListener!=null){
removeAuthStateListener(mAuthListener);
}
}
//[结束于\u停止\u删除\u侦听器]
公开无效注册(){
日志d(标签“注册”);
如果(!validate()){
onSignupFailed();
返回;
}
_signupButton.setEnabled(false);
final ProgressDialog ProgressDialog=新建ProgressDialog(SignupActivity.this,
R.style.AppTheme(黑色对话框);
progressDialog.setUndeterminate(true);
progressDialog.setMessage(“创建帐户…”);
progressDialog.show();
字符串名称=_nameText.getText().toString();
字符串email=_emailText.getText().toString();
字符串密码=_passwordText.getText().toString();
//TODO:在这里实现您自己的注册逻辑。
//[开始使用电子邮件登录]
mAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“signInWithEmail:onComplete:+task.isSuccessful()”);
//如果登录失败,则向用户显示消息。如果登录成功
//将通知身份验证状态侦听器,并使用逻辑来处理
//可以在侦听器中处理已登录用户。
如果(!task.issusccessful()){
w(标记“signInWithEmail”,task.getException());
Toast.makeText(getApplicationContext(),“身份验证失败”,
Toast.LENGTH_SHORT).show();//TODO:这是正确的吐司吗?
}
//[开始时不包括]
progressDialog.disclose();
//[完]
}
});
//[使用电子邮件结束登录]
}
//新的android.os.Handler().postDelayed(
//新的Runnable(){
//公开募捐{
////在完成onSignupSuccess或onSignupFailed调用时
////取决于成功
//onSignupSuccess();
////onSignupFailed();
//progressDialog.disclose();
//                    }
//                }, 3000);
//    }
public void onSignupSuccess(){
_signupButton.setEnabled(true);
setResult(RESULT_OK,null);
完成();
}
public void onSignupFailed(){
Toast.makeText(getBaseContext(),“登录失败”,Toast.LENGTH_LONG.show();
_signupButton.setEnabled(true);
}
公共布尔验证(){
布尔有效=真;
字符串名称=_nameText.getText().toString();
字符串email=_emailText.getText().toString();
字符串密码=\u passw