我在Android应用程序开发方面相当新,我正在尝试从用户可以注册到数据库的地方开展活动,这是代码
public class RegisterActivity extends AppCompatActivity {
TextInputLayout mEmail, mPassword;
Button mRegisterButton;
FirebaseAuth mAuth;
Button loginAccountButton;
ProgressDialog progressDialogue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mPassword = (TextInputLayout) findViewById(R.id.password);
mEmail = (TextInputLayout) findViewById(R.id.email);
loginAccountButton = (Button) findViewById(R.id.loginalready);
mRegisterButton = (Button) findViewById(R.id.registerButton);
progressDialogue = new ProgressDialog(RegisterActivity.this);
mAuth = FirebaseAuth.getInstance();
loginAccountButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(RegisterActivity.this,login.class));
}
});
mRegisterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
registeruser();
}
private void registeruser() {
String email = mEmail.getEditText().getText().toString().trim();
String password = mPassword.getEditText().getText().toString().trim();
progressDialogue.setMessage("Please wait");
progressDialogue.show();
mAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
progressDialogue.dismiss();
Toast.makeText(RegisterActivity.this,"You're now registered",Toast.LENGTH_LONG).show();
startActivity(new Intent(RegisterActivity.this,MainActivity.class));
finish();
}
else{
Toast.makeText(RegisterActivity.this,"Something went horribly wrong",Toast.LENGTH_LONG).show();
}
}
});
}
});
}}
所有类都是正确导入的,似乎没有办法解决它,代码几个小时前工作但是现在它只是不会让我每次尝试运行代码时都会让我知道Toast 出现了可怕的错误
this is the activity_register.xml
<android.support.design.widget.TextInputLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
android:id="@+id/email"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
tools:layout_editor_absoluteY="8dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EMAIL" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/email"
android:id="@+id/password"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="PASSWORD" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/registerButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="REGISTER"
app:layout_constraintTop_toBottomOf="@+id/password"
tools:layout_editor_absoluteX="280dp" />
<Button
android:id="@+id/loginalready"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:text="login"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:text="login?"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/password"
app:layout_constraintVertical_bias="0.051" />
答案 0 :(得分:0)
将android:id=""
提供给EditText
,而不是TextInputLayout
,如下所示
<android.support.design.widget.TextInputLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/displayName"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/email"
android:hint="EMAIL" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/email"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/password"
android:hint="PASSWORD" />
</android.support.design.widget.TextInputLayout>
在您的Java文件中创建EdiText
而不是TextInputLayout
的对象,并获取如下值。
EdiText mEmail, mPassword;
mPassword = (EdiText) findViewById(R.id.password);
mEmail = (EdiText) findViewById(R.id.email);
用户在EditText
中输入的值不在TextInputLayout
中,因此您必须从EditText中获取值
我希望它为你工作!感谢