getPackageName()对空对象引用

时间:2018-01-18 10:37:03

标签: android android-activity nullpointerexception fragment

当我从片段中打开活动时,有时会出现错误 因为我从API 23知道它应该是getContext所以为此我也在我的代码上实现了try catch

authStateListener = new FirebaseAuth.AuthStateListener() {
            @RequiresApi(api = Build.VERSION_CODES.M)
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if(firebaseAuth.getCurrentUser()!=null) {
                    try {
                        Intent intent = new Intent(getContext(), Home_page.class);
                        startActivity(intent);
                    } catch (Exception e) {
                        Intent intent = new Intent(getActivity(), Home_page.class);
                        startActivity(intent);
                    }
                }
            }

但它有时会在Context.getPackageName()上给出空指针对象引用的错误,这可能是可能的原因???

1 个答案:

答案 0 :(得分:0)

AsyncCall的监听器可以在调用实体的任何状态下触发。因此,在这种情况下,您应首先检查ContextisAdded()是否存在实体。以下是一个例子。

 authStateListener = new FirebaseAuth.AuthStateListener() {
        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            if (firebaseAuth.getCurrentUser() != null) {
                if (getActivity() != null) {
                    Intent intent = new Intent(getActivity(), Home_page.class);
                    startActivity(intent);
                }
            }
        }
相关问题