Nueva pregunta

Pregunta:

 
  0  
 
Fecha: 22-02-2018 11:09:41 (En Español)

Como utilizar la flecha atrás del Toolbar en Fragment/WebView[No resuelta]

Hola, agradeceria vuestra ayuda con este problema que tengo de navegación, no consigo darle la función que necesito a la flecha atrás del Toolbar, he visto tutoriales y páginas con códigos que he ido probando y no he tenido suerte.

Os cuento a ver si se puede solucionar de alguna forma, porque al pulsar la flecha atrás del Tooblar y el botón físico del móvil la aplicación se cierra.

Tengo creada solo una Activity donde tengo puesto un menú, que al pulsar cualquier opción del menú nos lleva a una Clase Fragment, y en este fragment muestro una página web local, y esta página web tiene enlaces que van mostrando otras páginas web local.

Lo que intento es que al pulsar la flecha atrás, volvamos sobre los pasos dados, ya sea sobre las paginas web, o los menus

Este es el código del MainActivity.java

public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    HorizontalScrollMenuView horizontal_menu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setTitle("Titulo en el Menu");

        horizontal_menu = (HorizontalScrollMenuView) findViewById(R.id.horizontal_menu);
        viewPager = (ViewPager) findViewById(R.id.pager);

        horizontal_menu.addItem("Menu 1", R.drawable.menu1_icon,true);
        horizontal_menu.addItem("Menu 2", R.drawable.menu2_icon );
        horizontal_menu.addItem("Menu 3", R.drawable.menu3_icon );
        horizontal_menu.addItem("Menu 4", R.drawable.menu4_icon );
        horizontal_menu.addItem("Menu 5", R.drawable.menu5_icon );

        horizontal_menu.showItems();

        PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(pagerAdapter);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            // Boton atras
            @Override
            public void onPageSelected(int position) {
                horizontal_menu.setItemSelected(position);
                currentPosition = position;
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

        horizontal_menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
            @Override
            public void onHSMClick(MenuItem menuItem, int position) {
                viewPager.setCurrentItem(position);
            }
        });
    }

    private class PagerAdapter extends FragmentPagerAdapter {

        PagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {

            switch (position) {
                case 0:
                    return new Menu_1();
                case 1:
                    return new Menu_2();
                case 2:
                    return new Menu_3();
                case 3:
                    return new Menu_4();
                case 4:
                    return new Menu_5();

                default:
                    return new Menu_5();
            }
        }

        @Override
        public int getCount() {
            return 6;
        }

    }

}


Supongo que el código tiene que ir en este Activity, si hay que poner código en la Clase Fragment que es desde la que cargo la paginas web locales, me lo decir y os pongo el código


Gracias.
Etiquetas: Android - Pregunta Votos: 0 - Respuestas: 5 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 23-02-2018 02:38:10 Revista ESTE TEMA a ver si es lo que necesitas, también esta esta OTRA respuesta a ver.

    Tambien aqui dan una paronamica más amplia sobre el handler del backbutton en fragments: TEMA

    No tengo mucho que aportar en este caso porque no uso fragments en mi desarrollo, salvo casos puntuales como diálogos por ejemplo.
      Votos: 0 - Link respuesta
     
  •  
      0  
     
    Fecha: 23-02-2018 08:16:55 Hola Carlos y gracias, he visto esas páginas y en alguna ya las vi y probé el código, pero no me funciono, seguro que si a los demás le funciona, es porque algo no estoy haciendo bien.

    La verdad es que llevo la negra con el dicho botoncito, y es lo que más necesito para poder utilizar las páginas web locales,

    Primero he visto la esta página que habla del backbutton en fragments, esa clase activity no es la que yo estoy utilizando, extiende de extends FragmentActivity y cómo puedes ver en el código que y puesto arriba yo utilizo extends AppCompatActivity, si la cambio me dan error el código que tengo puesto.
    De todas formas he intentado crear un proyecto con el código que hay en ese página, no sé porque si lo he copiado tal cual, me da error en el buttonclick del código:
    btnClick = (Button) rootView.findViewById(R.id.buttonclick);
    De todas formas era para ver el funcionamiento, pero creo que ese código no puedo utilizarlo en la activity que tengo.

    También he probado mucho código que he encontrado en la página stackoverflow, incluido el que has puesto, pero me parece que no lo estoy colocando bien, porque me muestra mucho código en color rojo con errores, si alguien me pude guiar con ese código para intentar probarlo y ver si funciona se lo agradecería.
      Votos: 0 - Link respuesta
     
  • Fecha: 23-02-2018 09:38:10 estoy claro en eso, lo que digo no es que copies todo el codigo, esa no es la finalidad de la programación, si no que tomes fragmentos que puedas utilizar en el tuyo haciendo las debidas adaptaciones y pruebas, por ejemplo, en ESTA veo que trabajan con una variable global:

    
    int check = 0;
    
    


    y es con esa variable con la que juegan para darle funcionalidad al botón atrás, actualizando con un valor numérico con cada fragment que se carga.

    Luego más abajo en el monitor de onBackPressed() detectan que valor contiene dicha variable y retroceden los fragmentos de acuerdo a este valor.
      Votos: 0 - Link respuesta
     
  •  
      0  
     
    Fecha: 23-02-2018 11:05:41 es facil como lo dices, pero luego cuando pongo el codigo muestra error, jeje

    Lo que decia de copiar todo el codigo, era para crear un proyecto nuevo con todo ese codigo.

    he puesto la variable y el codigo onBackPressed() en el MainActivity.java y me muestra este error



    en la clase fragmente Telefono.java he puesto este codigo
        public void onBackPressed() {
            if (webView.getVisibility() == View.VISIBLE) {
                webView.setVisibility(View.GONE);
            } else {
                getActivity().finish();
            }
        }
    


    entonces el codigo que puse en el MainActivity.java ya muestra este error



    si lo confirmo


    el error se quita


    pero luego en Telefono.java, empieza el lio


    Al final despues de pelearme con el codigo, acabo borrandolo y apagando el ordenador, para no echarme a llorar jeje
      Votos: 0 - Link respuesta
     
  •  
      0  
     
    Fecha: 24-02-2018 19:47:48 Hay alguien mas que me puede hechar una mano y decirme como puedo conseguir que funciene la flecha atras.

    He comentado que las demas clases son Fragment y que muestro paginas web mediante Webview por el funcionamiento de la aplicacion y si tiene algo que ver, aunque no se si con eso he podido liar la pregunta ya que el codigo parece ser que solo se coloca en la calse Activity, no?

    un saludo.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com