Porting un sistema POS basado en web a Android -- java campo con android campo con reflection camp codereview Relacionados El problema

Porting a web-based POS system to Android


4
vote

problema

Español

Actualmente estoy portando un sistema POS basado en web a Android. La versión de Android utiliza NavigationDrawer para navegar entre los menús.

Lo que necesito una revisión de código es mi enfoque actual en la carga de fragmentos al seleccionar un elemento del cajón de navegación. Estoy usando la reflexión para lograr mi caso.

mainactivity.java

  @Override     public void onNavigationDrawerItemSelected(String menuItemText) {         FragmentManager fragmentManager = getSupportFragmentManager();         BaseFragment fragmentToOpen = null;         Method newInstanceMethod = null;         try {             newInstanceMethod = AvailableMenuList.MENU_ITEM_TABLE.get(menuItemText).getMethod("newInstance", null);             fragmentToOpen = (BaseFragment) newInstanceMethod.invoke(fragmentToOpen, null);         } catch (Exception e) {             e.printStackTrace();         }          fragmentManager.beginTransaction()                 .replace(R.id.container, fragmentToOpen, menuItemText)                 .addToBackStack(menuItemText)                 .commit();     }   

HashMap Implementación de las funciones POS disponibles en la versión de Android:

      public class AvailableMenuList {         private AvailableMenuList() {} //Disable object instantiation              public static final HashMap<String, Class<BaseFragment>> MENU_ITEM_TABLE = new HashMap() {{                 put("Announcement", AnnouncementListFragment.class);                 put("Board", BoardListFragment.class);                 put("SalesRegistration", SalesRegFragment.class);                 put("SalesRecords", SalesRtvFragment.class);                 put("OrderRegistration", OrderRegFragment.class);                 put("OrderRecords", OrderRtvFragment.class);             }};         }     }   

¿Existe un mejor enfoque de instanciar un nuevo Fragment (llamando 9988777665544339 ) en lugar de usar la reflexión? Actualmente, solo hay 6 funcionalidades, pero habrá al menos 30 más en el futuro.

Original en ingles

I'm currently porting a web-based POS system to Android. The Android version uses NavigationDrawer to navigate between menus.

What I need a code review on is my current approach in loading fragments upon selected an item from navigation drawer. I'm using reflection to achieve my case.

MainActivity.java

@Override     public void onNavigationDrawerItemSelected(String menuItemText) {         FragmentManager fragmentManager = getSupportFragmentManager();         BaseFragment fragmentToOpen = null;         Method newInstanceMethod = null;         try {             newInstanceMethod = AvailableMenuList.MENU_ITEM_TABLE.get(menuItemText).getMethod("newInstance", null);             fragmentToOpen = (BaseFragment) newInstanceMethod.invoke(fragmentToOpen, null);         } catch (Exception e) {             e.printStackTrace();         }          fragmentManager.beginTransaction()                 .replace(R.id.container, fragmentToOpen, menuItemText)                 .addToBackStack(menuItemText)                 .commit();     } 

HashMap implementation of available POS functions in Android version:

    public class AvailableMenuList {         private AvailableMenuList() {} //Disable object instantiation              public static final HashMap<String, Class<BaseFragment>> MENU_ITEM_TABLE = new HashMap() {{                 put("Announcement", AnnouncementListFragment.class);                 put("Board", BoardListFragment.class);                 put("SalesRegistration", SalesRegFragment.class);                 put("SalesRecords", SalesRtvFragment.class);                 put("OrderRegistration", OrderRegFragment.class);                 put("OrderRecords", OrderRtvFragment.class);             }};         }     } 

Is there a better approach of instantiating a new Fragment (by calling newInstance) instead of using reflection? Currently, there's only 6 functionalities but there's going to be at least 30 more in the future.

        
   
   

Lista de respuestas

-1
 
vote

Puede usar fragmentmanager.findfragmentbytag () en su lugar.

Si no se encuentra el fragmento, inicia una nueva.

fragmento = nuevo tu fragmento ();

 

You can use fragmentManager.findFragmentByTag() instead.

If the fragment is not found, initalize a new one.

fragment = new YourFragment();

 
 
   
   

Relacionados problema

18  Devolviendo los campos de clase groovy como un mapa  ( Returning groovy class fields as a map ) 
Quiero obtener un mapa de todos los campos en una clase (también conocido como objeto de valor) de una manera genérica. Los siguientes funcionan bien para mí:...

2  Paquetes 'TAG' y hazlos descubribles  ( Tag packages and make them discoverable ) 
Tenemos otro equipo que va a exponer los paquetes de clase para usar para escanear y recoger los detalles. Si deben agregar algunos paquetes nuevos o renombra...

5  Método / Parámetro Tracer  ( Method parameter tracer ) 
Estoy escribiendo una clase que puede registrar la actividad de una solicitud durante el tiempo de ejecución. El plan es que la cadena 9988776665544330 se e...

8  Evaluar el mejor tipo común para adaptarse a ambos tipos  ( Evaluate the best common type to fit both of types ) 
Aquí hay un algoritmo para evaluar la mejor coincidencia System.Type para dos tipos en Heroarhy. Esta es una de las respuestas para esta pregunta de StackO...

2  Lanzar una enumeración con descripciones en un diccionario  ( Casting an enumeration with descriptions into a dictionary ) 
La enumeración en cuestión se basa en int , por lo que la siguiente extensión devuelve un Dictionary<int, string> del valor y la descripción de Enum. ¿Ha...

12  Mapeo expandoObject a otro tipo de objeto  ( Mapping expandoobject to another object type ) 
Estoy trabajando en un método de ayuda que mapea las propiedades de un 9988776655544334 a un objeto suministrado por un usuario y se preguntaba si el código...

10  Implementación de Linq-To-Sage  ( Linq to sage implementation ) 
seguimiento de mi Última pregunta donde envié la API de SAITE con un 9988776665544334 < / Código> Interfaz, decidí empujar la abstracción un paso más allá,...

4  Ruby Fibonacci (n) Cálculo recursivo optimizado con la reflexión  ( Ruby fibonaccin recursive computation optimized with reflection ) 
La idea es tomar el método recursivo de FibonAcci (N) conocido (y terriblemente malo): # recursively computate fibonacci(n) def fib(n) n <= 2 ? 1 : fib(n...

5  Reflexión y proyecto EULER  ( Reflection and project euler ) 
He hecho un corredor de Project Euler para facilitar el funcionamiento de los diversos problemas. Nunca antes había usado la reflexión, y creo que he encontra...

3  Obtención de una lista de todos los campos en un objeto  ( Getting a list of all fields in an object ) 
Tengo el siguiente código que utilizo para generar una lista de todos los campos (públicos) en un objeto en una manera fácil (ISH) para leer. El problema con ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos