0

I am unable to go to my accounts settings page when clicking on the menu item. When I click on the item, error messages show up on my logcat. I tried different solutions to fix this problem, but no luck, unfortunately.

This is my database structure.

This is my SettingsActivity.java file

public class SettingsActivity extends AppCompatActivity {

private DatabaseReference mUserDatabase;
private FirebaseUser mCurrentUser;

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

    String current_uid = mCurrentUser.getUid();
    //String current_uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();

    mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid);

    mUserDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Toast.makeText(SettingsActivity.this, dataSnapshot.toString(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
}

This is my MainActivity.java

public class MainActivity extends AppCompatActivity {

// Creating an instance of the FirebaseAuth object
private FirebaseAuth mAuth;

private Toolbar mToolbar;

private ViewPager mViewPager;

private SectionsPagerAdapter mSectionsPagerAdapter;

private TabLayout mTabLayout;



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

    // Initialize the object
    mAuth = FirebaseAuth.getInstance();

    // Set the toolbar
    mToolbar = (Toolbar) findViewById(R.id.main_Toolbar);
    setSupportActionBar(mToolbar);   // allows the toolbar to be displayed on the screen
    getSupportActionBar().setTitle("Lapit Chat");

    // Tabs
    mViewPager = (ViewPager) findViewById(R.id.main_tabPager);
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    mViewPager.setAdapter(mSectionsPagerAdapter);

    mTabLayout = (TabLayout) findViewById(R.id.mainTabs);
    mTabLayout.setupWithViewPager(mViewPager);


}

@Override
public void onStart() {
    super.onStart();
    // get the current user logged in via Firebase and store it in the create variable
    FirebaseUser currentUser = mAuth.getCurrentUser();

    // if there is no user
    if (currentUser == null) {
        // User is not signed in; show the start activity
        sendToStart();
    } // if user is logged in, go straight to the main page

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.main_menu, menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);
    // If the user clicks the logout button
    if(item.getItemId() == R.id.menu_Logout) {
        // Log the user out of the session
        FirebaseAuth.getInstance().signOut();
        sendToStart();
    }
    if(item.getItemId() == R.id.menu_Settings) {
        Intent settingsIntent = new Intent(MainActivity.this, SettingsActivity.class);
        startActivity(settingsIntent);
    }
    return true;
}

// Method to send the user back to the start page when logged out
private void sendToStart() {
    Intent startIntent = new Intent(MainActivity.this, StartActivity.class);
    startActivity(startIntent);
    finish(); // Prevents user from coming back to this page when clicking the back button
}
}

From this activity, when the user clicks on the "Account Settings" menu item it does not let me and shows a dialog box saying "Unfortunately has stopped". In the errors screenshot it shows why, but I still do not understand it even though I have researched for solutions. Could anyone explain to me why this is happening?

Thank You for any help given.

hhh
  • 23
  • 1
  • 1
  • 4

1 Answers1

0

Place: String current_uid = mCurrentUser.getUid();

below: mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();

If you getUid() before retrieve current user, the mCurrentUser variable will be null and cause NullPointerException

nhoxbypass
  • 9,695
  • 11
  • 48
  • 71