Cómo utilizar los elementos de la barra de herramientas con Viewpager + Fragmentos
Estoy tratando de averiguar cómo implementar elementos de la barra de acciones basados en el fragmento que se está cargando dentro de mi viewpager. Mi código está abajo y estoy tratando de averiguar la mejor práctica para trabajar con ABS + ViewPager + Fragmentos.
Actividad principal
public class MainActivity extends SherlockFragmentActivity { private ViewPager mPager; private TitlePageIndicator mIndicator; private MainPagerAdapter mAdapter; private List<Fragment> mFragments; private static final String FRAGMENT1 = Fragment1.class.getName(); private static final String FRAGMENT2 = Fragment2.class.getName(); private static final String FRAGMENT3 = SupportFragment.class.getName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a_main); // add fragments mFragments = new ArrayList<Fragment>(); mFragments.add(Fragment.instantiate(this, FRAGMENT1)); mFragments.add(Fragment.instantiate(this, FRAGMENT2)); mFragments.add(Fragment.instantiate(this, FRAGMENT3)); // adapter mAdapter = new MainPagerAdapter(getSupportFragmentManager(), mFragments); // pager mPager = (ViewPager) findViewById(R.id.view_pager); mPager.setAdapter(mAdapter); // indicator mIndicator = (TitlePageIndicator) findViewById(R.id.title_indicator); mIndicator.setViewPager(mPager); } ...
MainPagerAdapter
public class MainPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragments; private String[] titles = new String[] {"System", "Community", "Support"}; private int mCount = titles.length; public MainPagerAdapter(FragmentManager fm, List<Fragment> f) { super(fm); mFragments = f; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mCount; } @Override public CharSequence getPageTitle(int position) { return titles[position]; }
Fragmento1
public class Fragment1 extends SherlockFragment { WebView web; static ProgressBar progressBar; @Override public View onCreateView(LayoutInflater inf, ViewGroup grp, Bundle icicle) { View v = inf.inflate(R.layout.activity_main, grp, false); web = (WebView) v.findViewById(R.id.webView); progressBar = (ProgressBar) v.findViewById(R.id.progressBar1); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); web.setWebViewClient(new SpecialWebView(progressBar)); web.setWebChromeClient(new SpecialWebChromeClient(progressBar)); // Progress Bar - End WebSettings websettings = web.getSettings(); websettings.setBuiltInZoomControls(false); web.setBackgroundColor(Color.parseColor("#f2f2f2")); websettings.setUseWideViewPort(true); websettings.setJavaScriptEnabled(true); websettings.setAllowFileAccess(true); websettings.setDomStorageEnabled(true); websettings.setLoadWithOverviewMode(true); websettings.setSavePassword(true); web.loadUrl("http://www.google.com"); }
Dentro de mi MainActivity he intentado lo siguiente y no puedo obtener el código correcto.
- Android: ¿Cómo activar / desactivar el elemento de menú de opción en el botón de clic?
- IllegalArgumentException Tipo de elemento de carga útil no válido - Con ActionBarCompat
- ¿Cómo puedo modificar un MenuItem en el menú de opciones de Android?
- ActionLayout para los elementos de la vista de navegación se muestra en el lado derecho
- Agregar dinámicamente elemento de acción en la barra de acción
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater Inflater = getSupportMenuInflater(); Inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem Item) { final int current = ((ViewPager) mFragments).getCurrentItem(); String currentId = current == 0 ? FRAGMENT1: (current == 1 ? FRAGMENT2: FRAGMENT3); //WebView web = (WebView) findViewById(currentId); switch (Item.getItemId()) { case R.id.menu_back: // web.goBack(); return true; case R.id.menu_forward: //web.goForward(); return true; case R.id.menu_refresh: //web.reload(); return true; } return super.onOptionsItemSelected(Item); }
- ¿Es posible acallar (no sólo deshabilitar) un MenuItem en Android?
- Cómo mostrar el elemento de menú con el icono y el texto en AppCompatActivity
- Elemento de menú de opciones personalizadas de Android
- ¿Qué relleno, margen y tamaño debo utilizar para un diseño personalizado MenuItem?
- Dos elementos del menú Spinner en el ancho de ActionBar
- Obtención de MenuItem en onCreate
- OnOptionsItemSelected () no se llama al hacer clic en el elemento de menú que tiene un conjunto actionLayout en él
- ¿Cómo ordenar elementos de menú en el menú de opciones de una aplicación de Android?
Estoy tratando de averiguar cómo implementar elementos de la barra de acciones basados en el fragmento que se está cargando dentro de mi viewpager.
Eso ocurre automáticamente. Sólo tiene los fragmentos llamada setHasOptionsMenu(true)
, a continuación, implementar onCreateOptionsMenu()
y onOptionsItemSelected()
. El Fragment*PagerAdapter
organizará la repoblación de la barra de acción después de un cambio de página, para eliminar elementos de la barra de acción de la página anterior e introducir elementos de la barra de acción de la página recién actual.
Aquí hay un ejemplo de proyecto que demuestra que los elementos de la barra de acción aparecen y desaparecen, ya que sólo las páginas de números impares (para los índices basados en 1, lo que el usuario ve) tienen elementos de barras de acción.
- Proveedores de contenido multiproceso sincronizados a uno predeterminado
- ¿Cuál es el significado de la nueva anotación @SystemApi, cualquier diferencia de @hide?