¿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.

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?

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); 
  • Oyente de ubicación en el servicio de fondo Android
  • ¿Es posible enviar comandos HDMI CEC desde un dispositivo Android?
  • ¿Cómo cambiar entre el modo vertical y el modo horizontal con libGDX?
  • Cómo llamar a una clase de actividad de una clase de java de noraml en Android
  • Controlador de eventos en android - diseñador de automatización y manejo de tiempo 2 vistas en manejadores separados
  • Java.lang.OutOfMemoryError al intentar cargar un mapa de bits en imageView
  • Quitar el relleno en la barra de progreso horizontal
  • ¿Cuál usar? JSONObject de org.json VS JsonObject de javax.json
  • La muestra FlowingDrawer no se ejecuta
  • ¿Cómo publicar el nombre del dispositivo (Variable) sobre WiFi, como algunas aplicaciones de transferencia de archivos hacer?
  • Android - NullPointerException: almacenamiento == null
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.