Как установить видимость для MenuItem в android studio, у меня вылетает исключение

MainActivity.java

package elit.express.elit;

import android.app.DatePickerDialog;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {
    private boolean actualActivity = false;

    private Filler filler;
    private LayoutSettings layoutSettings;

    private Calendar date = Calendar.getInstance();
    private String datePost=null;

    private Menu menu;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        filler=new Filler(getApplicationContext(),this);
        layoutSettings=new LayoutSettings(this,filler);

        //layoutSettings.setReservationActivity();
        layoutSettings.setLoadingActivity(getApplicationContext(),menu);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_reservation, menu);
        this.menu=menu;
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.toEditName:
                layoutSettings.setRegistrationActivity();
                break;
            case R.id.toHistory:
                layoutSettings.setHistoryActivity();
                break;
            default:
                break;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed() {
        if (actualActivity)
            layoutSettings.setReservationActivity();
        else
            super.onBackPressed();
    }


    ////////////////Buttons
    public void onClickRegistration(View view) {
        layoutSettings.setReservationActivity();
    }

    public void onClickResumeReservation(View view) {
        switch (filler.buttonResumeIterator){
            case 1:
                filler.setVisible1();
                break;
            case 2:
                SendRequest sendRequest=new SendRequest(getApplicationContext());

                String request=datePost+"&voyage="+filler.spVoyage.getSelectedItem()+"&placeCount="+filler.spPlaceCount.getSelectedItem();

                sendRequest.execute("http://testandroid.zzz.com.ua/elit1.php","date",request);

                filler.setVisible2();
                break;
            case 3:
                filler.setVisible3();
                break;
            default:
                break;
        }
    }

    public void onClickCancelReservation(View view) {
        filler.setVisible1();
        filler.setInvisible2();
        filler.setInvisible3();
        findViewById(R.id.cancelReservation).setVisibility(View.GONE);
        findViewById(R.id.resumeReservation).setVisibility(View.VISIBLE);
        filler.buttonResumeIterator=2;
    }


    DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            date.set(Calendar.YEAR, year);
            date.set(Calendar.MONTH, monthOfYear);
            date.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            setInitialDateTime();
        }
    };

    public void setDate(View v) {
        new DatePickerDialog(MainActivity.this, d,
                date.get(Calendar.YEAR),
                date.get(Calendar.MONTH),
                date.get(Calendar.DAY_OF_MONTH))
                .show();
    }

    public void setInitialDateTime() {
        Button currentDate = (Button) findViewById(R.id.dateButton);
        datePost=DateUtils.formatDateTime(this,
                date.getTimeInMillis(),
                DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR);
        currentDate.setText(datePost);
    }

}

LayoutSettings.java

package elit.express.elit;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.widget.Toolbar;

public class LayoutSettings {

    private MainActivity main;
    private Filler filler;
    public boolean actualActivity=false;

    LayoutSettings(MainActivity main,Filler filler){
        this.main=main;
        this.filler=filler;
    }

    public void setActivityToolbar() {
        Toolbar toolbar = main.findViewById(R.id.toolbar);
        main.setSupportActionBar(toolbar);
    }

    protected void setLoadingActivity(Context context,Menu menu) {
        main.setContentView(R.layout.activity_loading);// set layout
        setActivityToolbar();
        main.getSupportActionBar().setTitle(R.string.toolbar_name);
        if (isNetworkAvailable(context)){
            //menu.findItem(R.id.toEditName).setVisible(false);
            menu.findItem(R.id.toHistory).setVisible(true);
            setReservationActivity();
        }
        else
            Toast.makeText(context,R.string.checkInternet,Toast.LENGTH_LONG).show();
    }

    protected void setRegistrationActivity() {
        actualActivity = true;
        main.setContentView(R.layout.activity_registration);// set layout
        setActivityToolbar();
        main.getSupportActionBar().setTitle(R.string.toolbar_name);
    }

    protected void setHistoryActivity() {
        actualActivity = true;
        main.setContentView(R.layout.activity_history);// set layout
        setActivityToolbar();
        main.getSupportActionBar().setTitle(R.string.history);
    }

    protected void setReservationActivity() {
        actualActivity = false;
        main.setContentView(R.layout.activity_reservation);
        setActivityToolbar();
        main.getSupportActionBar().setTitle(R.string.reservation);
        filler.setVisible1();
        main.setInitialDateTime();
        filler.fillVoyageAdapter();
        filler.fillPlaceCountList();
        filler.fillDepartureList();
        filler.fillArrivalList();
        filler.fillDepartureTimeList();
        filler.buttonResumeIterator=2;
    }

    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            Log.d("NetworkCheck", "isNetworkAvailable: No");
            return false;
        }

        // get network info for all of the data interfaces (e.g. WiFi, 3G, LTE, etc.)
        NetworkInfo[] info = connectivity.getAllNetworkInfo();

        // make sure that there is at least one interface to test against
        if (info != null) {
            // iterate through the interfaces
            for (int i = 0; i < info.length; i++) {
                // check this interface for a connected state
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    Log.d("NetworkCheck", "isNetworkAvailable: Yes");
                    return true;
                }
            }
        }
        return false;
    }
}

menu_reservation.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/toEditName"
        android:title="@string/buttonEditName"
        app:showAsAction="ifRoom"
        android:visible="false"
        android:icon="@drawable/ic_edit_name" />
    <item
        android:id="@+id/toHistory"
        android:title="@string/buttonHistory"
        app:showAsAction="ifRoom"
        android:visible="false"
        android:icon="@drawable/ic_history" />
</menu>

Ответы (0 шт):