0

My app crashes whenever I clicked on the sign in button. Here is the logcat:

08-05 14:58:44.058 2283-2283/com.finalyearproject.vimelraj.qfoody E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                    Process: com.finalyearproject.vimelraj.qfoody, PID: 2283
                                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.finalyearproject.vimelraj.qfoody/com.finalyearproject.vimelraj.qfoody.Home}: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                                                        at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                        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: Can't pass null for argument 'pathString' in child()
                                                                                        at com.google.firebase.database.DatabaseReference.child(Unknown Source)
                                                                                        at com.finalyearproject.vimelraj.qfoody.Home.updateToken(Home.java:270)
                                                                                        at com.finalyearproject.vimelraj.qfoody.Home.onCreate(Home.java:189)
                                                                                        at android.app.Activity.performCreate(Activity.java:6679)
                                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                                                                                        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                        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) 

This is the source code:

FirebaseDatabase database;
DatabaseReference category;

TextView txtFullName;

RecyclerView recycler_menu;
RecyclerView.LayoutManager layoutManager;

FirebaseRecyclerAdapter<Category,MenuViewHolder> adapter;

SwipeRefreshLayout swipeRefreshLayout;

CounterFab fab;

//Slider
HashMap<String,String> image_list;
SliderLayout mSlider;


@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
            .setDefaultFontPath("fonts/restaurant_font.otf")
            .setFontAttrId(R.attr.fontPath)
            .build());
    setContentView(R.layout.activity_home);


    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
    toolbar.setTitle("Menu");
    setSupportActionBar(toolbar);

    swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_layout);
    swipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary,
            android.R.color.holo_green_dark,
            android.R.color.holo_orange_dark,
            android.R.color.holo_blue_dark
    );
    swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            if(Common.isConnectedToInternet(getBaseContext()))
                loadMenu();
            else
            {
                Toast.makeText(getBaseContext(), "Please check your Internet Connection!!", Toast.LENGTH_SHORT).show();
                return;
            }
        }
    });

    swipeRefreshLayout.post(new Runnable() {
        @Override
        public void run() {
            if(Common.isConnectedToInternet(getBaseContext()))
                loadMenu();
            else
            {
                Toast.makeText(getBaseContext(), "Please check your Internet Connection!!", Toast.LENGTH_SHORT).show();
                return;
            }
        }
    });


    //Init Firebase
    database = FirebaseDatabase.getInstance();
    category = database.getReference("Category");


    Paper.init(this);


    fab = (CounterFab) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cartIntent = new Intent(Home.this,Cart.class);
            startActivity(cartIntent);

        }
    });

    fab.setCount(new Database(this).getCountCart(Common.currentUser.getPhone()));


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);


    //Set Name for user
    View headerView = navigationView.getHeaderView(0);
    txtFullName = (TextView)headerView.findViewById(R.id.txtFullName);
    txtFullName.setText(Common.currentUser.getName());

    //Load menu
    recycler_menu = (RecyclerView)findViewById(R.id.recycler_menu);
    recycler_menu.setLayoutManager(new GridLayoutManager(this,2));
    LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(recycler_menu.getContext(),
            R.anim.layout_fall_down);
    recycler_menu.setLayoutAnimation(controller);

    updateToken(FirebaseInstanceId.getInstance().getToken());

    //Slider
    setupSlider();

    Intent service = new Intent(Home.this, ListenOrder.class);
    startService(service);

}

private void setupSlider() {
    mSlider = (SliderLayout)findViewById(R.id.slider);
    image_list = new HashMap<>();

    final DatabaseReference banners = database.getReference("Banner");

    banners.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot postSnapShot:dataSnapshot.getChildren())
            {
                Banner banner = postSnapShot.getValue(Banner.class);

                image_list.put(banner.getName()+"@@@"+banner.getId(),banner.getImage());

            }
            for(String key:image_list.keySet())
            {
                String[] keySplit = key.split("@@@");
                String nameOfFood = keySplit[0];
                String idOfFood = keySplit[1];

                final TextSliderView textSliderView = new TextSliderView(getBaseContext());
                textSliderView
                        .description(nameOfFood)
                        .image(image_list.get(key))
                        .setScaleType(BaseSliderView.ScaleType.Fit)
                        .setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
                            @Override
                            public void onSliderClick(BaseSliderView slider) {
                                Intent intent = new Intent(Home.this,FoodDetail.class);
                                intent.putExtras(textSliderView.getBundle());
                                startActivity(intent);

                            }
                        });
                textSliderView.bundle(new Bundle());
                textSliderView.getBundle().putString("FoodId",idOfFood);

                mSlider.addSlider(textSliderView);

                banners.removeEventListener(this);

            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
    mSlider.setPresetTransformer(SliderLayout.Transformer.Background2Foreground);
    mSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
    mSlider.setCustomAnimation(new DescriptionAnimation());
    mSlider.setDuration(4000);

}

@Override
protected void onResume() {
    super.onResume();
    fab.setCount(new Database(this).getCountCart(Common.currentUser.getPhone()));
    if(adapter != null)
        adapter.startListening();
}

private void updateToken(String token) {
    FirebaseDatabase db = FirebaseDatabase.getInstance();
    DatabaseReference tokens = db.getReference("Tokens");
    Token data = new Token(token,false);
    tokens.child(Common.currentUser.getPhone()).setValue(data);
}

private void loadMenu() {

    FirebaseRecyclerOptions<Category> options = new FirebaseRecyclerOptions.Builder<Category>()
            .setQuery(category,Category.class)
            .build();

    adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options) {
        @Override
        public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.menu_item,parent,false);
            return new MenuViewHolder(itemView);
        }

        @Override
        protected void onBindViewHolder(@NonNull MenuViewHolder viewHolder, int position, @NonNull Category model) {
            viewHolder.txtMenuName.setText(model.getName());
            Picasso.with(getBaseContext()).load(model.getImage())
                    .into(viewHolder.imageView);
            final Category clickItem = model;
            viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View view, int position, boolean isLongClick) {
                    Intent foodList = new Intent(Home.this,FoodList.class);
                    foodList.putExtra("CategoryId",adapter.getRef(position).getKey());
                    startActivity(foodList);
                }
            });

        }
    };
    adapter.startListening();
    recycler_menu.setAdapter(adapter);
    swipeRefreshLayout.setRefreshing(false);

    //Animation
    recycler_menu.getAdapter().notifyDataSetChanged();
    recycler_menu.scheduleLayoutAnimation();

}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
    mSlider.stopAutoCycle();
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.home, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == R.id.menu_search)
        startActivity(new Intent(Home.this,SearchActivity.class));

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_menu) {

    } else if (id == R.id.nav_cart) {
        Intent cartIntent = new Intent(Home.this,Cart.class);
        startActivity(cartIntent);

    } else if (id == R.id.nav_settings) {

    } else if (id == R.id.nav_orders) {
        Intent orderIntent = new Intent(Home.this,OrderStatus.class);
        startActivity(orderIntent);

    }
    else if (id == R.id.nav_favorites) {
        startActivity(new Intent(Home.this,FavoritesActivity.class));

    }else if (id == R.id.nav_log_out) {

        //Delete Remember user & password
        Paper.book().destroy();

        //Logout
        Intent login = new Intent(Home.this,MainActivity.class);
        login.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(login);
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

}

Remario
  • 3,813
  • 2
  • 18
  • 25
Vimel Raj
  • 11
  • 4

0 Answers0