Android Java - problema de cambio

Estoy trabajando en una aplicación de prueba que requiere conexión al servidor y guardo la respuesta. La respuesta en realidad es un paquete de datos, así que necesito entender qué tipo de paquete es y ejecutarlo. Por ahora puedo recibir la respuesta, calcular el paquete de datos y ahora necesito un poco de ayuda con el método de cambio donde quiero obtener el tipo de paquete.

Aquí está el código que estoy usando:

                    RPCPacket packet=null;
                    switch(RPCPacketType.getPacketTypeByValue(pType)){
                        case ST_OBJECT_TYPE_INFO_START:
                        {
                            packet = new InfoStartRPCPacket(    objectIdentificator,
                                                                RPCPacketType.getPacketTypeByValue(pType),
                                                                RPCOperationType.getByValue(Integer.parseInt(operation)),
                                                                objectId,
                                                                id,
                                                                Integer.parseInt(size),
                                                                hash,
                                                                RPCPacketDataType.getByValue(dataType),
                                                                first );
                            break;
                        }
                        case ST_OBJECT_TYPE_INFO_END:{
                            packet = new InfoEndRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_INFO_ERROR:{
                            packet = new InfoErrorRPCPacket();

                            break;
                        }
                            // Basic packets
                        case ST_OBJECT_TYPE_COLLECTION:{
                            packet = new CollectionRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_CATEGORY:{
                            packet = new CategoryRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_CARD:{
                            packet = new CardRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_MESSAGE:{
                            packet = new MessageRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_GENRE:{
                            packet = new GenreRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_TAG:{
                            packet = new TagRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_USER:{
                            packet = new UserRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_CARDSTATS_CATEGORY:{
                            packet = new CardStatsCategoryRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_CONTENT:{
                            packet = new ContentRPCPacket();

                            break;
                        }
                            // Media packets
                        case ST_OBJECT_TYPE_MEDIA_COLLECTION:{
                            packet = new MediaCollectionRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_MEDIA_CATEGORY:{
                            packet = new MediaCategoryRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_MEDIA_CARD:{
                            packet = new MediaCardRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_MEDIA_TAG:{
                            packet = new MediaTagRPCPacket();

                            break;
                        }
                        case ST_OBJECT_TYPE_MEDIA_COLLECTION_BUTTON:{
                            packet = new MediaCollectionButtonRPCPacket();

                            break;
                        }
                            // unknown packet
                        default: {
                            packet=null;

                            break;
                        }
                    }

Necesito una forma de poder inicializar el paquete como InfoStartRPCPacket o algo diferente después de verificar todos los interruptores. Básicamente quiero poder hacer algo como este interruptor externo:

packet.executeInfoStartPacket(/*params*/);  , when executeInfoStartPacket is a method in InfoStartRPCPacket class.

¿Alguna sugerencia de cómo hacer eso?

Respuesta 1

Si presiono el botón Atrás de mi actividad principal, aparece una pantalla en negro. ¿Es este comportamiento normal? Para solucionar esto, he puesto el siguiente código: ¿es esto una solución alternativa? vacío público ...

He agregado una nueva actividad a mi aplicación que ya tenía algunas otras actividades. Estoy tratando de hacer mi nueva actividad como actividad principal. Cuando se hace clic en un botón de las actividades existentes anteriormente ...

Estoy usando el siguiente método para descargar imágenes de un servidor para servir en una aplicación de Android. public static void downloadToFile (archivo de archivo, URL URL, int connectTimeout, int readTimeout) ...

Tengo un extraño problema. Estoy usando los servicios de Apache para configurar mis servicios de Windows. Según Procrun, mis archivos por lotes deberían haberse configurado para iniciar y detener servicios. mi problema es cuando comienzo mi ...