Как установить видимость для 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>