NullPointerException FirebaseUser.getUid () 'для ссылки на нулевой объект

вот ошибка E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.jams.socialnetwork, PID: 15878 java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.example.jams.socialnetwork / com.example.jams.socialnetwork.MainActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод java.lang.String com. google.firebase.auth.FirebaseUser.getUid () 'для ссылки на нулевой объект в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2690) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2755) в android.app.ActivityThread.-wrap12 (ActivityThread.java) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1495) в android.os.Handler.dispatchMessage (Handler.java:102) в android.os.Looper.loop (Looper.java:154) в android.app.ActivityThread.main (ActivityThread.java:6196) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:888) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:778)

Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод

'java.lang.String com.google.firebase.auth.FirebaseUser.getUid ()' для ссылки на нулевой объект в com.example.jams.socialnetwork.MainActivity.onCreate (MainActivity.java:52) в android.app.Activity.performCreate (Activity.java:6698) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1140) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2643)

Я перепробовал много вещей, но не могу понять, где я делаю не так

java> пакет com.example.jams.socialnetwork;

                     import android.content.Intent;
                     import android.support.annotation.NonNull;
                     import android.support.design.widget.NavigationView;
                     import android.support.v4.widget.DrawerLayout;
                     import android.support.v7.app.ActionBarDrawerToggle;
                     import android.support.v7.app.AppCompatActivity;
                      import android.os.Bundle;
                      import android.support.v7.widget.RecyclerView;
                     import android.support.v7.widget.Toolbar;
                      import android.view.MenuItem;
                      import android.view.View;
                     import android.widget.TextView;
                       import android.widget.Toast;

                  import com.google.firebase.auth.FirebaseAuth;
                import com.google.firebase.auth.FirebaseUser;

               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.squareup.picasso.Picasso;

import de.hdodenhof.circleimageview.CircleImageView;

public class MainActivity extends AppCompatActivity {

    private NavigationView navigationView;
    private Toolbar mToolbar;
    private DrawerLayout drawerLayout;
    private ActionBarDrawerToggle actionBarDrawerToggle;
    private RecyclerView postList;

    private CircleImageView NavProfileImage;
    private TextView NavProfileUserName;

    private FirebaseAuth mAuth;
    private DatabaseReference UserRef;
    String currentUserID;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mAuth = FirebaseAuth.getInstance();
        currentUserID = mAuth.getCurrentUser().getUid();
        UserRef = FirebaseDatabase.getInstance().getReference().child("Users");


        mToolbar = (Toolbar) findViewById(R.id.main_page_toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setTitle("Home");




        drawerLayout = (DrawerLayout) findViewById(R.id.drawable_layout);
        actionBarDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout,R.string.drawer_Open, R.string.drawer_Close);
        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        navigationView = (NavigationView) findViewById(R.id.navigation_view);

        View navView = navigationView.inflateHeaderView(R.layout.navigation_header);

        NavProfileImage = (CircleImageView) navView.findViewById(R.id.nav_profile_image);
        NavProfileUserName = (TextView) navView.findViewById(R.id.nav_user_full_name);






        UserRef.child(currentUserID).addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot)
            {
               if (dataSnapshot.exists())
               {
                   String fullname = dataSnapshot.child("fullname").getValue().toString();
                   String image = dataSnapshot.child("profileimage").getValue().toString();

                   NavProfileUserName.setText(fullname);
                   Picasso.with(MainActivity.this).load(image).placeholder(R.drawable.profile).into(NavProfileImage);
               }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError)
            {

            }
        });




        navigationView.setNavigationItemSelectedListener
                (new NavigationView.OnNavigationItemSelectedListener()
                {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item)
                    {
                        UserMenuSelector(item);
                        return false;
                    }
                });




    }





    @Override
    protected void onStart()
    {
        super.onStart();

        FirebaseUser currentUser =mAuth.getCurrentUser();

        if (currentUser==null)
        {
            SendUserToLoginActivity();
        }

        else
        {
            CheckUserExistence();
        }


    }

    private void CheckUserExistence()
    {
        final String current_user_id = mAuth.getCurrentUser().getUid();

        UserRef.addValueEventListener(new ValueEventListener()
        {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot)
            {
                if (!dataSnapshot.hasChild(current_user_id))
                {
                    SendUserToSetupActivity();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError)
            {

            }
        });



    }

    private void SendUserToSetupActivity()
    {
        Intent SetupIntent = new Intent(MainActivity.this,SetupActivity.class);
        SetupIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(SetupIntent);
        finish();


    }








    private void SendUserToLoginActivity()
    {
        Intent LoginIntent = new Intent(MainActivity.this,LoginActivity.class);
        LoginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(LoginIntent);
        finish();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        if (actionBarDrawerToggle.onOptionsItemSelected(item))
        {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }





    private void UserMenuSelector(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.nav_profile:
                Toast.makeText(this,"Profile",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_post:
                Toast.makeText(this,"Post",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_home:
                Toast.makeText(this,"Home",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_friends:
                Toast.makeText(this,"friends",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_find_friends:
                Toast.makeText(this,"find friends",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_messages:
                Toast.makeText(this,"message",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_settings:
                Toast.makeText(this,"Settings",Toast.LENGTH_SHORT).show();
                break;

            case R.id.nav_logout:
                mAuth.signOut();
                SendUserToLoginActivity();
                break;
        }
    }


    }

Пожалуйста, разместите свой код в виде текста, а не изображений. Взгляните на stackoverflow.com/help/how-to-ask

Sangam Belose 29.11.2018 12:46

я разместил свой код !! пожалуйста, помогите мне с этой проблемой, где я делаю ошибку !!

Jam's channel 29.11.2018 13:38

В какой строке кода возникает эта ошибка? Пожалуйста, ответьте @AlexMamo

Alex Mamo 29.11.2018 13:40

в строке 52 этого кода @AlexMamo

Jam's channel 29.11.2018 13:44

Укажите точную строку.

Alex Mamo 29.11.2018 13:45

currentUserID = mAuth.getCurrentUser (). getUid (); в строке 52 этот

Jam's channel 29.11.2018 13:46

внутри метода oncreate currentUserID = mAuth.getCurrentUser (). getUid (); эта строка @AlexMamo

Jam's channel 29.11.2018 13:47
mAuth.getCurrentUser() возвращает null. Вы уверены, что прошли аутентификацию?
Alex Mamo 29.11.2018 13:58

да. Но проверю еще раз! Тогда я тебе расскажу! В ту погоду я аутентифицирован или нет !!

Jam's channel 29.11.2018 14:19

да, я аутентифицирован !!

Jam's channel 29.11.2018 14:35

Привет, пожалуйста, помогите мне с этой проблемой! Я застрял в этой проблеме уже 3 дня! Пожалуйста, дайте мне знать, где я делаю ошибку !! @AlexMamo

Jam's channel 30.11.2018 08:29
3
11
1 323
2

Ответы 2

Основная причина сбоя: firebaseauth.getinstance (). Getcurrentuser () возвращает null Поэтому добавьте нулевую проверку перед доступом к firebaseauth.getinstance (). Getcurrentuser ().

Также перепроверьте вашу реализацию firebase с официальной документацией firebase: https://firebase.google.com/docs/auth/android/anonymous-auth

Столбец пользователей не найден в firebase для сбоя вашего приложения.

Каково решение??

Jam's channel 29.11.2018 14:18

Решение мы добавляем столбец пользователей и значение в firebase.

Manu Garg 29.11.2018 14:24

Подскажите пожалуйста подробности ?? Я новичок в этой сфере!

Jam's channel 30.11.2018 08:31

Другие вопросы по теме