Ao iniciar a Activity pela primeira vez, o onPrepareOptionsMenu deveria verificar o If para saber qual dois itens de menu deveria exibir na ActionBar, de acordo com o resultado do SharedPreferences.
Fiz alguns testes utilizando o Toast e verifiquei que o onPrepare consegue buscar o valor do SharedPreferences, mas não executa o If.
A condição só funciona se eu clicar e executar o onOptionsMenuItem.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_notas);
setTitle(TITULO_APPBAR);
configuraBotaoInsereNota();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu_lista_notas_activity, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem botao_stagLayout = menu.findItem(R.id.menu_lista_notas_staggeredLayout);
MenuItem botao_linearLayout = menu.findItem(R.id.menu_lista_notas_linearLayout);
// getMenuInflater().inflate(R.menu.menu_lista_notas_activity, menu);
linearLayoutManager = new LinearLayoutManager(this);
staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
List<Nota> todasNotas = pegaTodasNotas();
configuraRecyclerView(todasNotas, linearLayoutManager);
sharedPreferences = getSharedPreferences(LAYOUT_LISTA, Context.MODE_PRIVATE);
String layoutDoUsuario = sharedPreferences.getString(CHAVE_LAYOUT, NAO_ENCONTRADO);
Toast.makeText(this, layoutDoUsuario, Toast.LENGTH_SHORT).show();
if(layoutDoUsuario == STAGGERED){
botao_stagLayout.setVisible(false);
botao_linearLayout.setVisible(true);
configuraRecyclerView(todasNotas, staggeredGridLayoutManager);
} else if(layoutDoUsuario == LINEAR){
botao_stagLayout.setVisible(true);
botao_linearLayout.setVisible(false);
Toast.makeText(this, layoutDoUsuario, Toast.LENGTH_SHORT).show();
configuraRecyclerView(todasNotas, linearLayoutManager);
} else if(layoutDoUsuario == NAO_ENCONTRADO){
botao_stagLayout.setVisible(true);
botao_linearLayout.setVisible(false);
configuraRecyclerView(todasNotas, linearLayoutManager);
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String layoutStag = layoutStagggered.name();
String layoutLin = layoutLinear.name();
switch (item.getItemId()){
case R.id.menu_lista_notas_staggeredLayout:
sharedPreferences = getSharedPreferences(LAYOUT_LISTA, MODE_PRIVATE);
editor = sharedPreferences.edit();
editor.putString(CHAVE_LAYOUT, layoutStag);
editor.apply();
invalidateOptionsMenu();
break;
case R.id.menu_lista_notas_linearLayout:
editor = sharedPreferences.edit();
editor.putString(CHAVE_LAYOUT, layoutLin);
editor.apply();
invalidateOptionsMenu();
break;
}
return super.onOptionsItemSelected(item);
}