-3

My Java code is here
Strange behavior. I dont know what happened. please fix this problem. I think problem bind with navigation heeader. I wan to retrieve data from firebase and set in nav header.Help me.Thanks in advance. What happened i dont know.

Strange behavior. I dont know what happened. please fix this problem. I think problem bind with navigation heeader. I wan to retrieve data from firebase and set in nav header.Help me.Thanks in advance. What happened i dont know.

public class HomeActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;
    private DatabaseReference mReference;
    private FirebaseUser currentUser;
    private boolean twice;
    private ViewPager mViewPager;
    private TabLayout mTabLayout;
    private SectionPageAdapter mSectionPageAdapter;
    private DrawerLayout mDrawerLayout;
    private NavigationView mNavigationView;
    private ActionBarDrawerToggle mToggle;
    private   String UID;
    private TextView navUserName , navBloodGroup , mNavHeaderEmail;

    private Toolbar mToolbar;

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

  /*      mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
*/
        // Firebase contents

        currentUser = FirebaseAuth.getInstance().getCurrentUser();
        mReference = FirebaseDatabase.getInstance().getReference();
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        // This action use for access drawer component
        mNavigationView = (NavigationView) findViewById(R.id.nav_view);
        View headerView = mNavigationView.getHeaderView(0);

        navUserName = (TextView) headerView.findViewById(R.id.navDispProfileName);
        navBloodGroup = (TextView) headerView.findViewById(R.id.nav_dis_Blood);
        mNavHeaderEmail = (TextView) headerView.findViewById(R.id.navHeaderEmail);

        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        mAuth = FirebaseAuth.getInstance();


        mViewPager = (ViewPager) findViewById(R.id.view_pager);
        mTabLayout = (TabLayout) findViewById(R.id.main_tab);


        // Set Adapter in View pager
        mSectionPageAdapter = new SectionPageAdapter(getSupportFragmentManager());
        mViewPager.setAdapter(mSectionPageAdapter);
        // For Tab Layout
        mTabLayout.setupWithViewPager(mViewPager);
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                int id = item.getItemId();
                switch (id) {
                    case R.id.account:
                        startActivity(new Intent(getApplication(), EditProfileActivity.class));
                            break;

                        case R.id.logout:
                        if (currentUser != null) {
                            mAuth.signOut();
                            startActivity(new Intent(getApplication(), FirstActivity.class));
                        }
                            break;

                }
                mNavigationView.setCheckedItem(id);
                mDrawerLayout.closeDrawers();
                return true;
            }
        });

 ...... In here i got error. when i open again my application after sign out from firebase.     mReference.child("Users").child(currentUser.getUid()).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                // Retrieve Value from database
                String firstName =(String) dataSnapshot.child("FirstName").getValue();
                String lastName =  (String)dataSnapshot.child("LastName").getValue();
                String bloodGroup = (String)dataSnapshot.child("BloodGroup").getValue();
                String email = (String)dataSnapshot.child("Email").getValue();

                // Set value in TextView
                String completeName = firstName + " " + lastName;
                navUserName.setText(completeName);
                navBloodGroup.setText(bloodGroup);
                mNavHeaderEmail.setText(email);


            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

    @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 (mToggle.onOptionsItemSelected(item)) {
            return true;
        }


  /*      if (item.getItemId() == R.id.btn_logout) {
            if(currentUser != null) {
                startActivity(new Intent(this, FirstActivity.class));
                mAuth.signOut();
            }
        }
        else if(item.getItemId() == R.id.account_seting){
            // replaceFragment(new UserProfile());
            startActivity(new Intent(this,MenuActivity.class));
        }*/

        return true;
    }

    // method for back press close application
    @Override
    public void onBackPressed() {
        if (twice == true) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
            System.exit(0);

        }
        twice = true;
        Toast.makeText(this, "Please Again to Close Application", Toast.LENGTH_SHORT).show();
        new android.os.Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                twice = false;

            }
        }, 3000);

    }


    @Override
    protected void onStart() {
        super.onStart();
        if(currentUser == null){
            startActivity(new Intent(this , FirstActivity.class));
        }


    }
}






Process: com.example.adil.bloodbankapplication, PID: 3071
                                                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.adil.bloodbankapplication/com.example.adil.bloodbankapplication.HomeActivity}: java.lang.NullPointerException
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)
                                                                                         at android.app.ActivityThread.access$900(ActivityThread.java:170)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                         at android.os.Looper.loop(Looper.java:146)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5635)
                                                                                         at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                         at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
                                                                                         at dalvik.system.NativeStart.main(Native Method)
                                                                                      Caused by: java.lang.NullPointerException
                                                                                         at com.example.adil.bloodbankapplication.HomeActivity.onCreate(HomeActivity.java:105)
                                                                                         at android.app.Activity.performCreate(Activity.java:5585)
                                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495) 
                                                                                         at android.app.ActivityThread.access$900(ActivityThread.java:170) 
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304) 
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                         at android.os.Looper.loop(Looper.java:146) 
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5635) 
                                                                                         at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                         at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
                                                                                         at dalvik.system.NativeStart.main(Native Method) 
Muhammad Adil Sattar
  • 4,871
  • 2
  • 9
  • 6
  • You need to determine exactly what is null. If the line you've edited is 105, there are several things that could be null. Use your debugger. Failing that, separate those method calls into individual lines, and run it again to narrow it down. – Mike M. Jan 27 '18 at 01:40
  • Any method you know how to handle exception firebase – Muhammad Adil Sattar Jan 27 '18 at 01:42
  • I've not used Firebase yet, but if you've signed out, should `currentUser` be null? – Mike M. Jan 27 '18 at 01:43
  • so you want to say i add manually current user equal to null ... – Muhammad Adil Sattar Jan 27 '18 at 01:47
  • No, I meant you shouldn't be calling `currentUser.getUid()` on the line you've marked if `currentUser` is null. Sorry, I didn't phrase that well. – Mike M. Jan 27 '18 at 01:48

1 Answers1

-1

Well, you have a error on line 105 that's an NPE. Something is null that shouldn't be.

at com.example.adil.bloodbankapplication.HomeActivity.onCreate(HomeActivity.java:105)

Let us know what line that is and maybe we can help more.

ACVM
  • 1,497
  • 8
  • 14