¿Cómo iniciar una actividad desde una clase java?
He leído algunos mensajes sobre cómo podría llamar a una actividad de Android de otra clase Java implementado en la aplicación, pero no hay respuesta a mi problema.
Tengo una clase de la conexión ( Connection.java
) que maneja la conexión permanente necesitada por la aplicación. Éste se construye con el patrón Singleton, así que cada vez que necesito información de conexión o solicito algo que hago:
- La actividad en el host de tabulación se queda en blanco
- onKeyDown o onBackPressed en una actividad principal
- TabHost no mostrar el contenido al principio
- Controlar el color-estado / tamaño de la pestaña en TabActivity?
- Iniciar otra actividad dentro de FrameLayout de TabActivity
final Connection conn = Connection.getConnection(getApplicationContext()); //... Some Code Here conn.methodDoSomethingA();
Entonces, tengo una TabActivity que contiene 5 Actividades (A, B, C, D, E):
public class Tab extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab); final Connection conn = Connection.getConnection(getApplicationContext()); intent = new Intent().setClass(this, A.class); spec = tabHost.newTabSpec("A") .setIndicator("A", res.getDrawable(R.drawable.tab_A)) .setContent(intent); tabHost.addTab(spec); //... same for activities B, C, D and E tabHost.setCurrentTab(0); } }
Ahora, tengo un método público en la clase Connection para terminar la conexión – endConnection()
– que se llama varias veces dentro de la clase Connection, por ejemplo, cuando hay Socket Timeout o cuando se recibe un mensaje personalizado desde el servidor informando al final de la sesión.
El problema comienza aquí – cuando se llama endConnection()
debe cerrar sockets y mostrar una actividad (Theme.Dialog) informando que la conexión se pierde. Para lograrlo hice esto, sin éxito:
public class Connection { private static Connection connection = null; private Context appContext = null; private Connection(Context appContext) { this.appContext = appContext; } public static Connection getConnection(Context appContext) { if (connection == null) return connection = new Connection(appContext); else return connection; } public void endConnection() { // ... Close sockets and streams - SOME CODE HERE // Show Disconnect Dialog Intent myIntent = new Intent(appContext, Disconnect.class); myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); appContext.startActivity( myIntent ); } }
También traté de pasar el contexto TabActivity
como argumento a la clase Connection.java
y lo usé en lugar de appContext
, pero sin éxito tampoco.
Estoy recibiendo estos errores:
W/dalvikvm(9449): threadid=3: thread exiting with uncaught exception (group=0x2aaca228) E/AndroidRuntime(9449): Uncaught handler: thread main exiting due to uncaught exception E/AndroidRuntime(9449): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.Disconnect}: java.lang.NullPointerException
En otras palabras: – ¿Cómo iniciar una actividad de una clase de Java ?!
- Actualizado - Android Facebook api 3.0 error: No se puede llamar a LoginActivity con un paquete de llamada nula
- Establecer la intención de volver clave en TabActivity
- TabActivity Actividad infantil con BroadcastReceiver permanece viva en segundo plano
- Combinar el menú TabActivity con los menús de Actividades contenidas
- Android SearchView no permite escribir (conflicto con TabActivity?)
- Android 2.1 NullPointerException con TabWidgets
- Desliza el dedo para cambiar las pestañas de Android, como las aplicaciones de YouTube / Google Music
- Característica Título personalizado: No se pueden combinar títulos personalizados en API 11 y superiores
Encontré el error.
En primer lugar, quiero darles las gracias a todos por sus comentarios.
Aparentemente hice todo bien, y así es como se hace!
El error fue un error novato que me avergüenza:
El Disconnect.java tenía un oyente a un botón que no existía en su archivo de diseño XML de Content View, pero existe en otro diseño.
¡Nunca sospeché eso! Estúpido, ¿no ?!
Espero que este post pueda ayudar a todos por una de dos cosas:
- Llamar a una actividad de otra clase java ;
- ¡No publique preguntas sin explorar errores impensables!
- Recibí un error de complición _GLIBCXX_PERMIT_BACKWARD_HASH en android NDK al usar hash_map
- ¿Falta el parámetro de intención de Android FLAG_ACTIVITY_SINGLE_TASK?