Llama a la actividad principal desde un fragmento de viewPager.
Cómo limitar mi actividad principal para que no regrese a la última página de mi Fragmento una vez que regrese de la última página del Fragmento a la actividad principal. Tengo una actividad de inicio y esa actividad de inicio lleva a otras 3 actividades al hacer clic en el botón y en una de ellas hay fragmentos. La última página del fragmento lleva a la actividad de inicio, pero cuando presiono el botón de retroceso en la actividad de inicio, me lleva nuevamente a la última página del fragmento de donde he venido, y luego vuelvo a presionar el botón de retroceso y mi aplicación se cierra.
MI CLASE DE ACTIVIDAD PRINCIPAL
public class Home extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
}
public void Consultation_Form(View view) {
startActivity(new Intent(getApplicationContext(), ConsultationForm.class));
finish();
}
public void Registration_Form(View view) {
startActivity(new Intent(getApplicationContext(), RegistrationForm.class));
finish();
}
public void Assessment_Form(View view) {
startActivity(new Intent(getApplicationContext(), AssessmentForm.class));
finish();
}
public void Booking_Form(View view) {
startActivity(new Intent(getApplicationContext(), BookingForm.class));
finish();
}
}
MI CLASE DE FRAGMENTO DE VIEWPAGER
public class PC_v16 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.pc_v16, container, false);
TextView tv = (TextView) view.findViewById(R.id.tvReferral);
Button btBackHome = view.findViewById(R.id.btBackHome);
btBackHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Home.class);
getActivity().startActivity(intent);
}
});
return view;
}
}
davy.ai
Para limitar que la actividad principal regrese a la última página de un fragmento, puedes anular el método
onBackPressed()
en la clase de tu actividadHome
.Aquí tienes un ejemplo:
En este ejemplo, añadimos una variable booleana llamada
backPressed
para llevar un registro de si se ha pulsado el botón de retroceso.Sobreescribimos el método
onBackPressed()
para comprobar si se mostró el último fragmento. Si es así, finaliza la actividad. De lo contrario, saca el último fragmento de la pila de retroceso.En tu clase de fragmento
PC_v16
, modifica el métodoonClick()
del botón de retroceso para llamar agetActivity().onBackPressed()
en lugar de iniciar una nueva actividadHome
:Esto señalará a la actividad
Home
que saque el último fragmento de la pila de retroceso en lugar de iniciar una nueva actividad, evitando el problema de volver a la última página del fragmento.