É possível usá-lo em um fragment? Tentei mas não aconteceu nada
É possível usar o onOptionsItemSelected
dentro de um Fragment
, sim. Basta fazer o seguinte código:
Na sua Activity
, dentro do onOptionsItemSelected
dela você precisará retornar false
para todos os eventos que serão tratados pelo fragment, por exemplo:
public class MinhaActivity extends Activity {
public boolean onOptionsItemSelected(MenuItem item) {
if(item == R.id.tratar_na_activity) {
// código para tratar esse clique...
return true;
}
else if(item == R.id.tratar_no_fragment) {
//nada a fazer aqui, então só devolvo false.
return false;
}
}
}
Agora, no fragment só precisamos fazer o onOptionsItemSelected
e dizer que ele deverá tratar o clique no menu também:
public class MeuFragment extends Fragment {
public void onCreate(Bundle bundle) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
public boolean onOptionsItemSelected(MenuItem item) {
if(item == R.id.tratar_na_activity) {
// esse clique foi tratado na Activity
return false;
}
else if(item == R.id.tratar_no_fragment) {
// Agora aqui tenho que tratar o clique deste item...
return true;
}
}
}