- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于在整个项目中使用相同的实例,我决定将它们放在单独的类中并使用静态方法调用它们。问题是它们中的一些效果很好,有些效果不好。不明白这是什么逻辑。
我有一个实例类(我知道 dagger2 不用担心)
public class FirebaseReferences {
public static FirebaseUser currentUserInstance = FirebaseAuth.getInstance().getCurrentUser();
public static String currentUserUid = currentUserInstance.getUid();
public static FirebaseUser getCurrentUserInstance(){
return FirebaseAuth.getInstance().getCurrentUser();
}
public static DatabaseReference getCurrentUserUidReference(){
return FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserUid);
}
static String getCurrentUserUidString(String uid){
String currentUid = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserUid).toString();
return currentUid;
}
public String getUserToken(){
return FirebaseInstanceId.getInstance().getToken();
}
}
那是我尝试调用 getCurrentUserInstance 的类,但出现热错误
firebaseAuth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
Log.v("RW", "onAuthStateChanged" );
if (FirebaseReferences.getCurrentUserInstance() != null) {
Log.v("RW", "user is not null");
//Create new user
final String userName = FirebaseReferences.getCurrentUserInstance().getDisplayName();
FirebaseReferences.getCurrentUserUidReference().addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//the image is still the default one
HashMap<String, String> userMap = new HashMap<>();
userMap.put("name", userName);
userMap.put("image", "default");
userMap.put("thumb_image", "default");
userMap.put("status", "Your status is here...");
FirebaseReferences.getCurrentUserUidReference().setValue(userMap);
}
错误代码
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.borisruzanov.russianwives, PID: 19900
java.lang.ExceptionInInitializerError
at com.borisruzanov.russianwives.utils.FirebaseReferences.getCurrentUserInstance(FirebaseReferences.java:14)
at com.borisruzanov.russianwives.utils.AuthStateListenerUtil$1.onAuthStateChanged(AuthStateListenerUtil.java:34)
at com.google.firebase.auth.zzi.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
at com.borisruzanov.russianwives.utils.FirebaseReferences.<clinit>(FirebaseReferences.java:11)
我不确定,但也许我犯了一个错误,我试图将这些事件保存在单独的类中?或者也许有更好的做法我该怎么做?但无论如何我不想复制粘贴所有类中相似的所有实例
附言。我尝试编辑代码,现在可以使用了。但奇怪的是,这里 FirebaseUser user = firebaseAuth.getCurrentUser();
我在没有调用静态方法的情况下将 FirebaseUser 与变量一起使用,当我使用 static 时它起作用但不起作用。但同时在 FirebaseReferences.getCurrentUserUidReference().
行中它与静态一起工作
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
Log.v("RW", "onAuthStateChanged" );
if (user != null) {
Log.v("RW", "user is not null");
//Create new user
String uid = user.getUid();
final String userName = FirebaseReferences.getCurrentUserInstance().getDisplayName();
FirebaseReferences.getCurrentUserUidReference().addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
最佳答案
没有有效的 Firebase 用户通过他们的身份验证触发器登录。如果 session 已过期、用户不再有效或已禁用,则可能会发生这种情况。
在使用任何与用户相关的数据之前总是进行空检查
if(Firebase.getInstance().getCurrentUser()!=null){
//Do your thing
}
基本上,您的静态方法 getCurrentUserInstance() 将返回一个空用户,而您正在对这个空引用调用 getUserId()。对结果进行空检查
关于android - Firebase 中的 ExceptionInInitializerError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49012585/
我在项目的不同领域遇到了以下异常。最糟糕的是我不知道它是什么......我的项目中没有 com.b.a.c.b 包。我尝试在网络上搜索,但仍然不明白是什么导致了此异常。 在从另一个 Activity
当我尝试单独运行 junit 测试时,出现此错误。当我尝试使用 Ant(它运行所有测试)运行它时,它运行良好。谁能告诉我可能的原因是什么? src 文件夹和 test 文件夹在同一层次结构中。我必须链
考虑以下类: sealed class Fruit(val id: String, val label: String) { object orange : Fruit("Citrus sinen
编译良好: static final Screen screen = Screen.getInstance(); static final InputListener listener = Input
我正在尝试读取 jar 包中的文件 (blip3.out)。我正在使用 getResourceAsStream 获取 url,然后尝试从中读取。我已经进行了多次尝试,并使用其他帖子中的解决方案,但仍然
我将一个项目导入到 eclipse 中并添加了依赖项(仅 oracle 驱动程序和 junit4)。但是当我尝试运行该项目时,我收到 ExceptionInInitializerError 。由于某种
当我尝试运行以下代码时,我收到 ExceptionInInitializerError 而不是空指针异常。为什么? static { String s= null; System.out.
我正在尝试使用 Class.forName 从我的对象调用方法,但出现 java.lang.ExceptionInInitializerError class MainClass(implicit v
我收到了ExceptionInInitializerError。我被告知“getException() 方法现在被称为原因,并且可以通过 Throwable.getCause() 方法以及前面提到的“
我是 Applet 编程新手,想要制作一个 Applet 放在网站上。那么我们开始吧。 这个项目的目标是,如果您单击该按钮,它将在浏览器顶部打开一个 JFrame。但在测试时,它给了我一个 java.
我使用 swing JFrame 作为我的应用程序的 MainFrame。我有一个按钮应该创建一个新窗口。但它会在初始化时崩溃,我不知道为什么。 public class Dialog { p
下面是我在运行服务器时从 netbeans IDE 得到的错误。正如错误所说 Uncompilable source code - Projects.ApplicationMenu is not ab
我正在使用兼容性类来构建用户代理字符串: public abstract class Compatibility { private static int sdkInt = 0; pr
编辑:已解决,但我不明白为什么 在 PokemonEnum 中我有这行 private PokemonEnum[ ] pokemon = PokemonEnum.values(); 我把它改为: pr
我正在尝试初始化 GL11,因为我在引用一个有 的方法时遇到了麻烦 GL11 gl 作为它的参数。我试图在我的渲染器类中初始化它,但它没有用,所以我认为它的初始化搞乱了渲染器并创建了一个新类来初始化。
我在一些论坛上搜索过,这似乎是一个常见问题。但是我找不到解决方案。我没有做任何疯狂的事情,所以发生这种情况似乎很奇怪。 @Override protected Scene onCreateScene(
我一定是在做一些非常愚蠢的事情,但是当我尝试在我的单例中实例化一个对象时,我得到了一个 ExceptionInInitializerError: class MySingleton { priva
请注意,我知道关于的规则 ExceptionInInitializerErrors 它说:任何静态 block 中抛出的异常被包装到ExceptionInInitializerError 然后抛出 E
我在尝试运行我的应用程序时意外遇到了 ExceptionInIntiialize 错误。我相信当用户点击快速聊天按钮时会提示错误。 10-09 18:27:08.450: E/AndroidRunti
当启动 JavaFX 应用程序(嵌入了 Swing 代码)作为 Webstart 时,会发生以下错误: java.lang.ExceptionInInitializerError at com
我是一名优秀的程序员,十分优秀!