OnNavigationItemSelected de la barra de acciones (int position, long itemId) no se dispara después de deslizar horizontalmente en Gingerbread
He implementado la vista de pestañas, así como la vista de desplazamiento horizontal (para cambiar las pestañas) con el modo de navegación como listas para la aplicación. Estoy utilizando ActionBarSherlock & TabPageIndicator. Utilicé fragmentos para recargar el contenido después de cambiar las pestañas.
En el hilandero desplegable, tengo 2 artículos. Estos se están seleccionando cada vez que la actividad se recarga o después de pulsar en Tabs.
- Picture.writeToStream () no escribiendo todos los mapas de bits
- ¿Se garantiza que init estática NO se ejecute si no se accede a la clase?
- Datagram Transport Layer Security (DTLS) en Android / Java
- Cómo utilizar ListFragment en Android Swipe Tabs?
- Crear gran Jar (escritorio) de android / escritorio gdx proyecto
Sin embargo, si se hace swipe para seleccionar otra pestaña, entonces onNavigationItemSelected (int position, long itemId) no se dispara en Gingerbread versión 🙁 Lo hemos probado en Gingerbread 2.3.6, 2.3.3.
En logcat
, recibí este mensaje de warning
"View:onTouchEvent:ViewFlags" is DISABLED
Pero, funciona perfectamente bien en ICS, Froyo, etc.
Su ayuda sería muy apreciada.
Siguiente es el fragmento de código:
public class MainPageActivity extends SherlockFragmentActivity implements ActionBar.OnNavigationListener { MenuItem menuItem; EditText searchText; public static Context mContext; public static DataAdapter dataAdapter; ArrayList<String> accountList; public static List<View> currentViewBeingChanged = new ArrayList<View>(); public static LayoutInflater layoutInflater; public static String checktab = "running", nameComp; int isRefresh; public static boolean isAutoRefresh = true; public static ArrayList<String> listItems; public static boolean check; public static boolean isAtleastOnce = true, listToBeRefreshed = false; public static ActionBar actionBar; public static int itemPosition, listPosition; public static FragmentManager fragmentManager; InputMethodManager imm; @Override protected void onCreate(Bundle savedInstanceState) { mContext = this; layoutInflater = getLayoutInflater(); fragmentManager = getSupportFragmentManager(); super.onCreate(savedInstanceState); setContentView(R.layout.main_page); actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); Context context = getSupportActionBar().getThemedContext(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_dropdown_item); adapter.clear(); for (int i = 0; i < ManageAccountLists.accountList.size(); i++) { adapter.add(ManageAccountLists.accountList.get(i)); } actionBar.setListNavigationCallbacks(adapter, this); tabPagerFunction(); } public void tabPagerFunction() { FragmentPagerAdapter adapter = new GoogleMusicAdapter( getSupportFragmentManager()); adapter.notifyDataSetChanged(); ViewPager pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(adapter); checktab = "running"; final TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator); indicator.setViewPager(pager); pager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { System.out.println("Tab selected.................."); if (arg0 == 0) { // Running tab is selected indicator.setCurrentItem(arg0); checktab = "running"; RunningInstancesActivity runningInstancesActivity = new RunningInstancesActivity(); runningInstancesActivity.callThread(); } else { // Stopped tab is selected indicator.setCurrentItem(arg0); checktab = "stopped"; StoppedInstancesActivity stoppedInstancesActivity = new StoppedInstancesActivity(); stoppedInstancesActivity.callThread(); InstanceStatusUpdate.isOnPostExecute = false; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } class GoogleMusicAdapter extends FragmentPagerAdapter { private final String[] CONTENT = new String[] { "Running", "Stopped" }; public GoogleMusicAdapter(FragmentManager fm) { super(fm); notifyDataSetChanged(); } @Override public Fragment getItem(int position) { switch (position) { /** Running tab is selected */ case 0: checktab = "stopped"; return RunningInstancesActivity.newInstance(0); /** Stopped tab is selected */ case 1: checktab = "running"; return StoppedInstancesActivity.newInstance(1); } return null; } @Override public CharSequence getPageTitle(int position) { return CONTENT[position % CONTENT.length].toUpperCase(); } public CharSequence getPageTitle(int position, int number) { return CONTENT[position % CONTENT.length].toUpperCase(); } @Override public int getCount() { return CONTENT.length; } } @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { System.out.println("Navigation item selected"); // Performs fetching } @Override public boolean dispatchTouchEvent(MotionEvent ev) { System.out.println("Dispatch touvh event.."); return super.dispatchTouchEvent(ev); } }
- Imagen "Zoom In / Out" en el botón Haga clic en Android?
- EditText leftView image se ajustan al tamaño del EditText Android
- Cómo registrar datos de Android Motion Sensors a una tasa fija
- RelativeLayout no se puede convertir en android.support.v7.widget.Toolbar
- OnNewIntent no se llama en JellyBean
- Cómo agregar código nativo de Android a LibGDX?
- ArrayList <CustomClass> en SharedPreferences
- Redimensionar el mapa de bits de Android
Intenta hacerlo
dependencies { compile "com.android.support:appcompat-v7:18.0.+" }
Y utilizar la biblioteca de soporte en su lugar.
Por lo que recuerdo hubo algunos problemas con la actualización de la lista de navegación después de deslizar (en ABS). Esto es lo que hice para resolver este problema y funciona con Android 2.3.7 (ABS), así como con Android 4.0 (AB nativo).
pager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageScrollStateChanged(int state) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if (navigatioBarIsUsed) actionBar.setSelectedNavigationItem(position); if (tabsAreUsed) actionBar.getTabAt(position).select(); } });
Internamente, vuelve a seleccionar la página – eso no es tan agradable – sin embargo esa fue la única solución que encontré.
Aclamaciones
Utilice este código ..
Dentro de su fragmento Utilice este código.
@Override public void setUserVisibleHint(boolean isVisibleToUser) { // TODO Auto-generated method stub super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { Activity activity = getActivity(); ActionBar actionBar = ((ActionBarActivity) activity) .getSupportActionBar(); actionBar.setIcon(getResources().getDrawable(R.drawable.nearby)); } }
- Cómo crear objeto JSON utilizando cadena?
- No se puede resolver el método 'show (android.support.v4.app.FragmentManager, java.lang.String)