Cómo editar el menú de la barra de Acción de Fragmento
He creado una aplicación que utiliza Fragmento. Desde mi MainActivity establecí el ActionBar.
Pero en uno de mis Fragmentos necesito modificar los iconos de acción y hacer clic.
- Método de devolución HashMap
- El botón no se puede hacer clic en el ListView expandible
- Envío de una cadena a través de Bluetooth desde un PC como cliente a un móvil como servidor
- Problema con el zoom de texto de WebView en Android
- ¿Cómo conectar android a la base de datos del oráculo?
Así que con el código de abajo, cuando carga el fragmento mi, todavía mostrar el menú de la barra de acción de MainActivity
aquí está mi MainActivity:
public void restoreActionBar() { actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); actionBar.setDisplayShowTitleEnabled(true); actionBar.setTitle(mTitle); // enable ActionBar app icon to behave as action to toggle nav drawer actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { if (!mNavigationDrawerFragment.isDrawerOpen()) { // Only show items in the action bar relevant to this screen // if the drawer is not showing. Otherwise, let the drawer // decide what to show in the action bar. getMenuInflater().inflate(R.menu.main, menu); //Handle the Search Menu SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); searchView.setQueryHint(this.getString(R.string.action_search)); ((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)) .setHintTextColor(getResources().getColor(R.color.white)); searchView.setOnQueryTextListener(OnQuerySearchView); mSearchCheck = false; restoreActionBar(); return true; } return super.onCreateOptionsMenu(menu); }//end onCreateOptionsMenu @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { /** CAMERA **/ case R.id.action_camera: //openCamera(); Utils.makeToast(getApplicationContext(), "Implement Camera", false); return true; /** SEARCH **/ case R.id.action_search: //openSearch(); mSearchCheck = true; Utils.makeToast(getApplicationContext(), "Implement Search", false); return true; /** SETTINGS **/ case R.id.action_settings: //openSettings(); Utils.makeToast(getApplicationContext(), "Implement Settings", false); return true; /** ABOUT **/ case R.id.action_help: //openHelp(); Utils.makeToast(getApplicationContext(), "Implement Help", false); return true; default: return super.onOptionsItemSelected(item); }//end switch }//end onOptionsItemSelected private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String arg0) { // TODO Auto-generated method stub return false; } @Override public boolean onQueryTextChange(String arg0) { // TODO Auto-generated method stub if (mSearchCheck){ // implement your search here } return false; } };//end OnQueryTextListener
Aquí está el diseño:
<menu 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" tools:context="com.example.sellbeesclean.MainActivity" > <!-- CAMERA --> <item android:id="@+id/action_camera" android:orderInCategory="100" android:icon="@drawable/ic_action_camera" android:title="@string/action_camera" app:showAsAction="ifRoom|collapseActionView"/> <!-- SEARCH --> <item android:id="@+id/action_search" android:orderInCategory="100" android:icon="@drawable/ic_action_search" android:title="@string/action_search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="ifRoom|collapseActionView"/> <!-- SETTINGS --> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never"/> <!-- HELP --> <item android:id="@+id/action_help" android:orderInCategory="100" android:icon="@drawable/ic_action_help" android:title="@string/action_help" app:showAsAction="ifRoom|collapseActionView"/> </menu>
Ella es mi Fragmento:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); View rootView = inflater.inflate(R.layout.user_profile_fragment, container, false); Log.i(TAG, "onCreateView"); ..... @Override public void onAttach(Activity activity) { super.onAttach(activity); setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.fragment_menu, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { /** EDIT **/ case R.id.action_edit: //openEditProfile(); //Open Edit Profile Fragment Utils.makeToast(MyApplication.getAppContext(), "Implement Camera", false); return true; default: return super.onOptionsItemSelected(item); }//end switch }//end onOptionsItemSelected
aquí el fragmento de diseño del menú
<menu 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" tools:context="com.example.sellbeesclean.MainActivity" > <!-- EDIT --> <item android:id="@+id/action_edit" android:orderInCategory="100" android:icon="@drawable/ic_action_edit" android:title="@string/action_edit_profile" app:showAsAction="ifRoom|collapseActionView"/></menu>
- Especificar intervalos para que el Administrador de ubicaciones transmita la ubicación actual en Android
- ¿Cómo hacer EditText que no se puede editar?
- Trabajando con DIalogs en fragmentos
- ProGuard para Android "java.lang.nosuchfielderror: Toast" excepción
- Editar encabezados de MultiPartEntity
- Android - ¿Cómo tomar un EditText (números) y luego convertirlo a un número entero para usarlo para las matemáticas?
- ¿Cómo hacer que más de un listview responda por diferentes onItemClickListener?
- Solicitud HTTP para archivo XML
En el método onCreateView de su fragmento escriba
setHasOptionsMenu(true);
E infle el archivo xml del menú en el método onCreateOptionsMenu
En onCreateOptionsMenu de un fragmento, escriba
menu.clear();
antes de inflar menús
- Android Studio atascado al crear nuevo Proyecto en Gradle: Configurar Proyecto o Gradle: Resolver Dependencias ': classpath:'
- ActionBarSherlock: java.lang.NoClassDefFoundError: com.actionbarsherlock.R $ styleable