android - 尝试在 android studio 中使用 firebase 使用电子邮件和密码进行注册时出错
问题描述
尝试在 android studio 中运行此代码时出现此错误:
错误:
2019-02-07 20:16:50.708 30406-30406/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2019-02-07 20:16:50.708 30406-30406/? E/libpersona: scanKnoxPersonas
2019-02-07 20:16:50.709 30406-30406/? E/libpersona: Couldn't open the File - /data/system/users/0/personalist.xml - No such file or directory
2019-02-07 20:17:05.426 30406-30406/com.example.servicees E/ViewRootImpl: sendUserActionEvent() returned.
2019-02-07 20:17:25.789 30406-30406/com.example.servicees E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.servicees, PID: 30406
java.lang.IllegalArgumentException: Given String is empty or null
at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(Unknown Source:5)
at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source:232)
at com.example.servicees.MainActivity$1.onClick(MainActivity.java:78)
at android.view.View.performClick(View.java:6909)
at android.widget.TextView.performClick(TextView.java:12693)
at android.view.View$PerformClick.run(View.java:26199)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
代码:
package com.example.servicees;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
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.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.hbb20.CountryCodePicker;
public class MainActivity extends AppCompatActivity {
EditText etName, etService, etDes, etCost, etContact, etPass, etEmail;
Button offer;
CountryCodePicker ccp;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
etName = findViewById(R.id.enterName);
etService = findViewById(R.id.enterService);
etDes = findViewById(R.id.enterDescription);
etCost = findViewById(R.id.enterCost);
etContact = findViewById(R.id.enterContact);
etPass = findViewById(R.id.enterPassword);
etEmail = findViewById(R.id.enterEmail);
ccp = findViewById(R.id.ccpLogin);
/*final String putName=etName.getText().toString();
final String putService=etService.getText().toString();
final String putDes=etDes.getText().toString();
final String putCost=etCost.getText().toString();
//final String putPass=etPass.getText().toString();
final String putEmail=etEmail.getText().toString();
final String putPass=etPass.getText().toString();*/
ccp.registerCarrierNumberEditText(etContact);
//final String fullNumber = ccp.getFullNumberWithPlus();
offer = findViewById(R.id.offerBtn);
mAuth=FirebaseAuth.getInstance();
offer.setOnClickListener(new View.OnClickListener() {
String putName=etName.getText().toString().trim();
String putService=etService.getText().toString().trim();
String putDes=etDes.getText().toString().trim();
String putCost=etCost.getText().toString().trim();
String putEmail=etEmail.getText().toString().trim();
String putPass=etPass.getText().toString().trim();
//ccp.registerCarrierNumberEditText(etContact);
String fullNumber = ccp.getFullNumberWithPlus();
@Override
public void onClick(View v) {
if(notEmpty()){
mAuth.createUserWithEmailAndPassword(putEmail, putPass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful())
{
User user = new User(putName, putService, putDes, putCost, fullNumber, putPass, putEmail);
FirebaseDatabase.getInstance().getReference("Users").child(putEmail).setValue(user);
Toast.makeText(MainActivity.this, "Registered", Toast.LENGTH_LONG).show();
}
else
Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_LONG).show();
}
});
}
else
Toast.makeText(MainActivity.this, "All Fields Are Required", Toast.LENGTH_LONG).show();
}
});
}
public boolean notEmpty() {
Boolean checker;
String checkEmName = etName.getText().toString();
String checkEmService = etService.getText().toString();
String checkEmDes = etDes.getText().toString();
String checkEmCost = etCost.getText().toString();
String fullNumberCh = ccp.getFullNumberWithPlus();
String checkEmEmail = etEmail.getText().toString();
String checkEmPass = etPass.getText().toString();
if (checkEmName.isEmpty() || checkEmService.isEmpty() || checkEmDes.isEmpty() || checkEmCost.isEmpty() || fullNumberCh.isEmpty() || checkEmEmail.isEmpty() || checkEmPass.isEmpty())
checker = false;
else
checker = true;
return checker;
}
}
解决方案
您需要将其中的每一个移动getText().toString()
到onClick
.
否则,在将单击侦听器附加到按钮时(即在您键入任何文本之前),您会得到空字符串
推荐阅读
- ios - 从 Openweathermap IOS 4 Xcode 10 获取 json 数据后 UI 不会更新
- c# - Json.NET 从自动属性初始化器获取默认值
- java - 更改树根后获得高度的最快方法是什么?
- azure-eventgrid - 如何查看发送到主题的事件?
- docker - 尝试详细运行 docker 容器或 docker exec 时在 $PATH 中找不到错误可执行文件
- asp.net-core-mvc - 修改asp.net core mvc中DefaultControllerFactory的CreateController方法中的ControllerContext
- javascript - 带有硒的HTML单元驱动程序不单击按钮
- express - 评论未显示在快速应用程序上
- arrays - 错误:找不到“object”类型的不同支持对象“[object Object]”。NgFor 只支持绑定到 Arrays 等 Iterables 如何解决
- java - 我的验证都在一个