Backstack desgaste androide no funciona
Estoy tratando de crear una aplicación de desgaste de Android que sólo tiene una actividad con un fragmento dentro de ella. Quiero poder cambiar los fragmentos basados en clics de botón u otras acciones de usuario.
Puedo reemplazar fragmentos muy bien; sin embargo, cuando deslizo desde el lado izquierdo de la pantalla hacia el lado derecho de la pantalla. La aplicación se cierra. Esperaba que este golpe actuara como un botón de retroceso y no saliera de la aplicación.
- Android Wear Project Gradle Sync falla
- ¿Se deben utilizar NotificationCompat y NotificationManagerCompat para que las notificaciones aparezcan en un portátil?
- Cómo implementar el reconocimiento de gestos en el uso de Android
- Adición de imagen a Android wear app - principiante
- La imagen no está centrada en ActionPage en el dispositivo de desgaste androide 320x320
Actividad principal
import android.support.v4.app.Fragment; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.wearable.view.WatchViewStub; public class MainActivity extends FragmentActivity implements FragmentChangeListener { int fragmentContainerId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); final WatchViewStub stub = (WatchViewStub)findViewById(R.id.watch_view_stub); // instialize the fragment to the loading page stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { @Override public void onLayoutInflated(WatchViewStub watchViewStub) { fragmentContainerId = R.id.fragmentContainer; if (watchViewStub.findViewById(R.id.fragmentContainer) != null) { Fragment1 fragment1= new Fragment1 (); // In case this activity was started with special instructions from an Intent, // pass the Intent's extras to the fragment as arguments fragment1.setArguments(getIntent().getExtras()); // Add the fragment to the 'fragment_container' FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.fragmentContainer, fragment1).addToBackStack(null); fragmentTransaction.commit(); } } }); } @Override public void replaceFragment(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.fragmentContainer, fragment, fragment.toString()).addToBackStack(null); System.out.println("Entry count in backstack is: " + fragmentManager.getBackStackEntryCount()); fragmentTransaction.commit(); } }
Fragmento 1
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class Fragment1 extends Fragment { public Fragment1() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment1, container, false); Button button1= (Button)view.findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Fragment2 fragment2= new Fragment2 (); FragmentChangeListener fc=(FragmentChangeListener)getActivity(); fc.replaceFragment(fragment2); } }); return view; } }
Fragmento 2
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; /** * A simple {@link Fragment} subclass. */ public class Fragment2 extends Fragment { public Fragment2() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View v =inflater.inflate(R.layout.fragment2, container, false); return v; } }
FragmentChangeListner
import android.support.v4.app.Fragment; public interface FragmentChangeListener { public void replaceFragment(Fragment fragment); }
Cuando navego de Fragmento1 a Fragmento2 a través del botón de clic. ¿Cómo puedo volver a Fragment1 sin salir de la aplicación?
- Cómo detectar si el dispositivo android está emparejado con reloj de desgaste android
- ¿Cómo desactiva Android Wear cuando está en modo de suspensión?
- Compilación de una sencilla aplicación portátil en Android Studio - WatchActivity not found
- Wear App y con tipo de compilación personalizado con applicationIdSuffix
- Adición de capacidades de voz en Android Wear
- Cuadro de diálogo Timepicker en Android Wear: ¿El material timepicker es demasiado grande?
- Android Wear: Sólo la mira "Simple" está funcionando, todas las otras negras
- Cómo empaquetar una app de WatchFace sólo para la publicación de Google Play
Hay una solución hacky potencial que puede utilizar si considera utilizar la clase GridViewPager en su lugar. Le permite desplazarse hacia atrás para ver el contenido anterior. Tendrías que actualizar las vistas al hacer swiping para simular un backstack dinámico, pero se puede hacer.
Una solución sería envolver su segundo diseño dentro de un
android.support.wearable.view.SwipeDismissFrameLayout
A continuación, puede capturar el gesto de descarte y dentro de la llamada de la actividad principal getFragmentManager().popBackStack();
puede establecer el listener en el SwipeDismissFrameLayout de la siguiente manera: swipeFrame.setDismissEnabled(true); swipeFrame.setOnDismissedListener(new SwipeDismissLayout.OnDismissedListener() { @Override public void onDismissed(SwipeDismissLayout swipeDismissLayout) { getActivity().getFragmentManager().popBackStack(); } });
swipeFrame.setDismissEnabled(true); swipeFrame.setOnDismissedListener(new SwipeDismissLayout.OnDismissedListener() { @Override public void onDismissed(SwipeDismissLayout swipeDismissLayout) { getActivity().getFragmentManager().popBackStack(); } });
- Cómo adjuntar javadoc al archivo .aar personalizado en android studio?
- Intención de recibir notificación sobre el evento de conexión BLE en el periférico Android