The main body of where the source of error should be is below.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Make a toolbar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Toolbar toolbar = findViewById(R.id.my_toolbar);
setSupportActionBar(toolbar);
//Initialise drawer widget
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
//Make the drawer widget functional
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
//Ensure it works on startup
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new showdata()).commit();
navigationView.setCheckedItem(R.id.showData);
}
//Data coming in from fragment ChangeCal
Intent intent = getIntent();
String cal = intent.getStringExtra("Calories");
String carb = intent.getStringExtra("Carbs");
String Protein = intent.getStringExtra("Protein");
String Fat = intent.getStringExtra("Fat");
boolean bClick= intent.getBooleanExtra("clicked", false);
boolean rClick = intent.getBooleanExtra("resetClicked", false);
//Getting the month function from class getTime
getTime getMonth = new getTime();
int month = getMonth.getMonth();
String monthS = "";
switch (month) {
case 1:
monthS = "Jan";
break;
case 2:
monthS = "Feb";
break;
case 3:
monthS = "Mar";
break;
case 4:
monthS = "Apr";
break;
case 5:
monthS = "May";
break;
case 6:
monthS = "Jun";
break;
case 7:
monthS = "Jul";
break;
case 8:
monthS = "Aug";
break;
case 9:
monthS = "Sep";
break;
case 10:
monthS = "Oct";
break;
case 11:
monthS = "Nov";
break;
case 12:
monthS = "Dec";
break;
default:
throw new IllegalStateException("Unexpected value: " + month);
}
db = new DBHelper(this);
String finalMonthS = monthS;
//Sending/altering/deleting data on SQL database, month as primary key and other nutrient values as well
if(bClick){
int calValue = Integer.parseInt(cal);
int carbValue = Integer.parseInt(carb);
int proteinValue = Integer.parseInt(Protein);
int fatValue = Integer.parseInt(Fat);
String inMonth = finalMonthS;
if (statusValue == 0) {
boolean checkInsertData = db.insertUserData(inMonth, calValue, carbValue, proteinValue, fatValue);
if (checkInsertData) {
Toast.makeText(MainActivity.this, "Nutrient data inserted", Toast.LENGTH_LONG).show();
statusValue = 1;
} else {
Toast.makeText(MainActivity.this, "Data input failed, pls input INT value", Toast.LENGTH_LONG).show();
}
} else if (statusValue == 1) {
boolean checkUpdateData1 = db.updateUserData(inMonth, calValue, carbValue, proteinValue, fatValue);
if (checkUpdateData1) {
Toast.makeText(MainActivity.this, "Nutrient data updated", Toast.LENGTH_LONG).show();
statusValue = 1;
} else {
Toast.makeText(MainActivity.this, "Data input failed, pls input INT value", Toast.LENGTH_LONG).show();
}
}
}
if(rClick){
boolean checkDeleteData = db.deleteUserData(finalMonthS);
if(checkDeleteData){
Toast.makeText(MainActivity.this, "Nutrient data reset", Toast.LENGTH_LONG).show();
statusValue = 1;
} else {
Toast.makeText(MainActivity.this, "Data reset failed", Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.showData:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new showdata()).commit();
break;
case R.id.nav_changeCal:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ChangeCal()).commit();
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
//Same thing here found it on yt probs closes the navigation drawer
@Override
public void onBackPressed() {
if(drawer.isDrawerOpen(GravityCompat.START)){
drawer.closeDrawer(GravityCompat.START);
}else {
super.onBackPressed();
}
}
This is my main activity's OnCreate method details. I am new to android development and it would be great if you could help me understand what the error is referring to. I don't understand because the RecyclerView the error tells me has no adapter attached is not used in my main activity XML file. I will put that below.
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout"
android:fitsSystemWindows="true"
tools:context=".MainActivity"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/nav_back"
android:id="@+id/my_toolbar"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:id="@+id/nav_view"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_menu">
</com.google.android.material.navigation.NavigationView>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="90dp">
</FrameLayout>
</androidx.drawerlayout.widget.DrawerLayout>
All of the above were my code for my main activity class and my main activity XML file. If you think I need to post more details such as the other classes I am using to process information, please do tell me. Thank you so much in advance.