¿Cómo puedo iniciar una nueva actividad de Android con una cadena?
Tengo un problema con una aplicación de Android en la que estoy trabajando.
Mi aplicación tiene varias secciones y la siguiente pantalla que carga se basa en una cadena. Por lo tanto, la pantalla 1 de la sección 1 sería, S1S1.
- Actualizar Android TextView
- Android: Cambiar la etiqueta de la aplicación mediante programación
- Array List Intent extra en Java
- ProcessInputStream.finalize () se ha agotado después de 10 segundos
- Pruebas en modo "Avión" en Android Emulator
Mi pregunta es, ¿cómo puedo iniciar una actividad basada en una cadena. Tengo S1S1 guardado en una cadena, lo llamamos nextactivity. En lugar de tener que escribir S1S1.class, necesito que proceda de la cadena. Tengo triend todo lo que puedo cosa de y google no ha ayudado realmente.
Algunas cosas que he intentado son
Intent myIntent = new Intent(nextactivity); Intent myIntent = new Intent(v.getContext(), getClass().getName().valueOf(nextactivity)); Intent myIntent = new Intent(v.getContext(), Class.forName(nextactivity));
Y trató de correr con
startActivityForResult(myIntent, 0);
Pero nada parece funcionar. ¿Algunas ideas?
- Cómo obtener nombre de archivo de recursos sin formato por id?
- ¿Cómo puedo comprobar el uso de memoria de un objeto en java
- ¿Cómo encontrar las aplicaciones en ejecución en programación en android?
- Estilo de la barra de desplazamiento de Spinner
- La mejor manera de implementar Client <-> Server <-> Arquitectura de bases de datos en una aplicación de Android?
- Dibujar objeto personalizado curvado en LIBGDX?
- ¿Cuál es la diferencia entre usar add (). AddToBackStack (), add (). Detach () y replace (). AddToBackStack () en un FragmentTransaction?
- Spinner con en el oyente del tecleo
Aquí está un código por el cual puede iniciar la actividad usando el nombre de la actividad
Class<?> c = null; if(StringClassname != null) { try { c = Class.forName(StringClassname ); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Intent intent = new Intent(mail.this, c); startActivity(intent);
EDITAR
Aquí el nombre de la clase será el nombre completo de la clase con el nombre del paquete. Por ejemplo, si su nombre de paquete será xyz
y si tiene nombre de actividad llamado A
entonces el nombre completo de la actividad A
será xyzA
.
Una forma aún mejor (y otra que se utiliza en el sistema para lanzar Browser.apk junto con otras aplicaciones que no están incluidas en AOSP):
Intent intent = new Intent(); intent.setClassName("com.android.browser","com.android.BrowserActivity"); context.startActivity(intent);
Como alternativa, si desea comprobar que puede iniciar la Activity
desde la línea de comandos, puede hacer algo como esto desde su shell:
adb shell am start com.android.browser/.BrowserActivity
No soy consciente de la solución, pero tengo una alternativa .. la forma similar a div ocultar y mostrar en las páginas web.
Si su s1s1 es cargado bajo contenido tenerlos en un linearlayout y mantener su visibilidad ido en el formulario de carga s1. Cuando haga clic en s1 para llegar a s1s1 ocultar s1 y establecer los parámetros de visibilidad a "visible".
Al hacer esto, puede evitar la creación de una actividad independiente y de esta manera también es fácil de navegar de nuevo.
¡Utilice Enums!
public enum SectionActivity { S1S1(MyS1Activity.class), S1S2(S2Activity.class); private Class<? extends Activity> activityClass; private SectionActivity(Class<? extends Activity> clazz) { this.activityClass = clazz; } public Class<? extends Activity> getActivity { return activityClass; } }
Entonces en algún lugar de su código:
SectionActivity act = SectionActivity.valueOf(string); Intent intent = new Intent(this, act.getActivity()); startActivity(intent);
- El proveedor de contactos de Android sólo obtiene contactos telefónicos con todos los correos electrónicos
- Traducir animación