Como puedo programar la flecha atras en Android.
Publicado por SoCu (9 intervenciones) el 29/01/2018 11:19:35
Hola, he empezado a crear una aplicación para uso personal, y no consigo darle la función que necesito a la flecha atrás que aparece en el menú Toolbar, he visto tutoriales y páginas con códigos que he ido probando y no he tenido suerte.
Tengo puesto un código porque cuando estaba en la actividad principal y pulsaba la flecha atrás la aplicación se cierra, ahora con este código no funciona bien porque va atrás pasando de menú en menú hasta llegar al primer menú.
Solo tengo creada una clase Activity, donde he creado un menú que lleva a las demás clases que son Fragment.
Este código que os pongo es el que tengo puesto, que seguro que hay cosas que no están bien, pero no es como ponerlo.
No quiero que al pulsar el botón regrese a la actividad principal, si no vuelva atrás sobre lo que estaba viendo.
Como tengo puestas páginas web en la aplicación, intento que el botón atrás tenga la misma función que la del navegador web del pc, que si voy pasando páginas hacia adelante, y si pulso la flecha atrás vuelva sobre lo que estaba viendo antes.
Así que si recurro a vosotros, y os agradecería vuestra ayuda para solucionar este problema.
Gracias.
Tengo puesto un código porque cuando estaba en la actividad principal y pulsaba la flecha atrás la aplicación se cierra, ahora con este código no funciona bien porque va atrás pasando de menú en menú hasta llegar al primer menú.
Solo tengo creada una clase Activity, donde he creado un menú que lleva a las demás clases que son Fragment.
Este código que os pongo es el que tengo puesto, que seguro que hay cosas que no están bien, pero no es como ponerlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
HorizontalScrollMenuView horizontal_menu;
int currentPosition = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
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);
}
});
}
@Override
public void onBackPressed() {
if (currentPosition > 0){
viewPager.setCurrentItem(currentPosition - 1);
}
else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.stop_1);
builder.setMessage("Quieres salir de la aplicación?");
builder.setTitle("Cerrar Documentos");
builder.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog dialog=builder.create();
dialog.show();
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return false;
}
//empieza codigo del menu de opciones que se muestra en el lado izquierdo
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_opciones, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
switch (item.getItemId()){
case R.id.m_acerca:
Toast toast = new Toast(getApplicationContext());
toast.setGravity( Gravity.CENTER,0,0);
TextView tv = new TextView(MainActivity.this);
tv.setBackgroundColor( Color.RED);
tv.setTextColor(Color.YELLOW);
tv.setTextSize(20);
Typeface t = Typeface.create("serif", Typeface.BOLD_ITALIC);
tv.setTypeface(t);
tv.setPadding(10,10,10,10);
tv.setText("\"Documentos Versión 1.0\"");
toast.setView(tv);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
return true;
case R.id.m_salir:
onBackPressed();
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
//termina el codigo del menu de opciones
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;
}
}
}
No quiero que al pulsar el botón regrese a la actividad principal, si no vuelva atrás sobre lo que estaba viendo.
Como tengo puestas páginas web en la aplicación, intento que el botón atrás tenga la misma función que la del navegador web del pc, que si voy pasando páginas hacia adelante, y si pulso la flecha atrás vuelva sobre lo que estaba viendo antes.
Así que si recurro a vosotros, y os agradecería vuestra ayuda para solucionar este problema.
Gracias.
Valora esta pregunta
0