{"id":296,"date":"2018-04-05T19:02:04","date_gmt":"2018-04-05T19:02:04","guid":{"rendered":"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/?page_id=296"},"modified":"2018-04-10T19:46:41","modified_gmt":"2018-04-10T19:46:41","slug":"ejemplo-tiendita-sin-base-de-datos","status":"publish","type":"page","link":"https:\/\/profeluismitre.com.mx\/Ejemplos\/?page_id=296","title":{"rendered":"Ejemplo Tiendita sin Base de Datos"},"content":{"rendered":"<h1 style=\"text-align: center;\"><strong>Ejemplo Tiendita sin Base de Datos<\/strong><\/h1>\n<p>este ejemplo implementa el uso de la Llamada ventana Splash, lector de c\u00f3digo de barras y de almacenamiento en arreglos.<\/p>\n<p style=\"text-align: center;\">@Autor: Prof. Luis Mitre<\/p>\n<h3><span style=\"color: #ff0000;\"><em><strong>Paso 1.<\/strong><\/em><\/span><\/h3>\n<p>Iniciamos creando un nuevo proyecto en android Studio el cual llamare <strong>MiTiendita:<\/strong><\/p>\n<h1 style=\"text-align: center;\"><strong><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-298\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita1-1-300x191.png\" alt=\"\" width=\"300\" height=\"191\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita1-1-300x191.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita1-1-768x490.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita1-1-1024x653.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita1-1.png 1083w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/strong><\/h1>\n<p>Al crear un nuevo proyecto aparecer\u00e1 la imagen anterior.<\/p>\n<ol>\n<li>nombre de la Aplicaci\u00f3n<\/li>\n<li>Paquete de instalaci\u00f3n de la aplicaci\u00f3n en Android, dejar por default el que pone android<\/li>\n<li>Ubicaci\u00f3n del proyecto en la computadora preferentemente poner una ubicaci\u00f3n f\u00e1cil de localizar ya que necesitaremos acceder a ella.<\/li>\n<\/ol>\n<p>Una vez llenado los datos oprimimos <strong>Next\u00a0<\/strong>y aparacera la ventana siguente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-300 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita2-300x192.png\" alt=\"\" width=\"300\" height=\"192\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita2-300x192.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita2-768x491.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita2-1024x654.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita2.png 1080w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>en la cual elegiremos el tipo de actividad que insertaremos por primera vez, es este caso es del tipo <strong>Empty Activity\u00a0<\/strong>la seleccionamos y daremos siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-301 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita3-300x192.png\" alt=\"\" width=\"300\" height=\"192\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita3-300x192.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita3-768x493.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita3-1024x657.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita3.png 1082w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>en la ventana ponemos el nombre que recibir\u00e1 nuestra actividad la cual Llamare\u00a0<strong>VentanaFlashActivity<\/strong>, la cual sera la portada de inicio de nuestra aplicaci\u00f3n.<\/p>\n<h3><em><span style=\"color: #ff0000;\"><strong>Paso 2.\u00a0<\/strong><\/span><\/em><\/h3>\n<p><span style=\"color: #000000;\">Nos ubicaremos con el navegador de Windows en la ubicaci\u00f3n de nuestro proyecto en el cual entraremos a la siguiente ruta:\u00a0 <strong>C:\\UbicacionDelProyecto\\MiTienda\\app\\src\\main\\res\u00a0<\/strong>en el cual encontraras las siguientes carpetas:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-302 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita4-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita4-300x169.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita4-768x432.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita4-1024x576.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita4.png 1366w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: center;\">ahora procederemos a crear 5 carpetas con los nombres siguientes:<\/p>\n<ol>\n<li style=\"text-align: left;\">drawable-mdpi<\/li>\n<li>drawable-hdpi<\/li>\n<li>drawable-xhdpi<\/li>\n<li>drawable-xxhdpi<\/li>\n<li>drawable-xxxhdpi<\/li>\n<\/ol>\n<p>las cuales son donde almacen\u00e1ramos las im\u00e1genes que utilizaremos en nuestra aplicaci\u00f3n, quedando de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-303 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita5-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita5-300x169.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita5-768x432.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita5-1024x576.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita5.png 1366w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Cabe mencionar que el objetivo de estas carpetas es que debido a que tenemos diferentes tama\u00f1os y resoluciones de dispositivos es necesario poner las im\u00e1genes apropiadas para cada tipo para ello nos apoyaremos con la siguiente tabla:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-304 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/Tama\u00f1o-de-imagenes-AndroidStudio-300x120.png\" alt=\"\" width=\"300\" height=\"120\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/Tama\u00f1o-de-imagenes-AndroidStudio-300x120.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/Tama\u00f1o-de-imagenes-AndroidStudio-768x308.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/Tama\u00f1o-de-imagenes-AndroidStudio.png 902w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>una vez puesto las im\u00e1genes a utilizar para nuestra ventanaSplash procederemos a los siguiente.<\/p>\n<h3><em><strong><span style=\"color: #ff0000;\">Paso 3.\u00a0<\/span><\/strong><\/em><\/h3>\n<p><span style=\"color: #000000;\">Procedemos a poner una imagen en la ventana visual de nuestra actividad que en mi caso se llama: <em><strong>activity_ventana_flash.xml,\u00a0<\/strong><\/em><\/span>quedando el c\u00f3digo de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"\r\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    android:orientation=\"vertical\"\r\n    android:gravity=\"center\"\r\n    tools:context=\"com.profeluismitre.mitienda.VentanaFlashActivity\"&gt;\r\n\r\n    &lt;ImageView\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\" \r\n        android:src=\"@drawable\/fondo\"\/&gt;\r\n\r\n&lt;\/LinearLayout&gt;<\/pre>\n<p>la cual se observar\u00eda de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-305 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita6-300x220.png\" alt=\"\" width=\"300\" height=\"220\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita6-300x220.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita6-768x563.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita6.png 802w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Procederemos a asignarle c\u00f3digo a la parte Java de esta actividad, el cual quedar\u00eda de la siguiente manera:<\/p>\n<pre class=\"width:750 lang:java decode:true\">public class VentanaFlashActivity extends AppCompatActivity {\r\n    \/\/tiempo que durara la ventana observandoce\r\n    private static final long TIEMPO_ESPERA = 1000;\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        \/\/establecemos la orientacion de la pantalla en vertical\r\n        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);\r\n        \/\/le ordenamos a la actividad que nos desaparesca el titulo para solo observar la imagen\r\n        requestWindowFeature(Window.FEATURE_NO_TITLE);\r\n        \/\/montamos la parte visual de la actividad\r\n        setContentView(R.layout.activity_ventana_flash);\r\n        \/\/creamos una tarea programada que es la que nos mandara la siguiente actividad\r\n        \/\/recordonado que marcara error en LoginActivity si aun no la hemos creado\r\n        TimerTask task = new TimerTask() {\r\n            @Override\r\n            public void run() {\r\n\r\n                \/\/ Inciando la siguiente actividad\r\n                Intent mainIntent = new Intent().setClass(\r\n                        VentanaFlashActivity.this, LoginActivity.class);\r\n                startActivity(mainIntent);\r\n\r\n                \/\/ cerramos la actividad para que el usuario no puede volver a esta \r\n                \/\/ si se oprime el boton de regresar del dispositivo\r\n                finish();\r\n            }\r\n        };\r\n\r\n        \/\/ establecemos un cronometro con el tiempo que decidimos para lanzar la actividad\r\n        Timer timer = new Timer();\r\n        timer.schedule(task, TIEMPO_ESPERA);\r\n\r\n    }\r\n}<\/pre>\n<p>Nota: en caso de que no se quite el titulo de la actividad al ejecutar la aplicaci\u00f3n tendremos que cambiar la herencia de la actividad <strong>VentanaSplashActivity<\/strong> que en mi caso es:\u00a0<span style=\"color: #ff0000;\"><strong>AppCompatActivity<\/strong><\/span> por <span style=\"color: #ff0000;\"><strong>Activity\u00a0<span style=\"color: #000000;\">esto es solo si no se quita el titulo<\/span><\/strong><\/span><\/p>\n<h3><span style=\"color: #ff0000;\"><em><strong>Paso 4.<\/strong><\/em><\/span><\/h3>\n<p>Creamos una nueva actividad pero ahora del tipo <strong>LoginActivity<\/strong> la cual la llamaremos As\u00ed, dando click derecho sobre la Carpeta <strong><span style=\"color: #000000;\">APP<\/span><\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-307 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita7-300x216.png\" alt=\"\" width=\"300\" height=\"216\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita7-300x216.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita7-768x554.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita7.png 818w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-308 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita8-300x242.png\" alt=\"\" width=\"300\" height=\"242\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita8-300x242.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita8-768x619.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita8.png 816w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Una vez creada la activity, como es una actividad pre dise\u00f1ada por android Studio le aremos algunos cambios y borraremos c\u00f3digo que para nuestro ejemplo no necesitaremos.<\/p>\n<p>Empezaremos con la ventana Visual, ingresamos al archivo creado xml llamado <strong>activity_login.xml<\/strong><\/p>\n<p>Primero modificamos la caja de texto de usuario:<\/p>\n<p>C\u00f3digo original:<\/p>\n<pre class=\"height:250 width:250 lang:default decode:true\"> &lt;AutoCompleteTextView\r\n    android:id=\"@+id\/email\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"wrap_content\"\r\n    android:hint=\"@string\/prompt_email\"\r\n    android:inputType=\"textEmailAddress\"\r\n    android:maxLines=\"1\"\r\n    android:singleLine=\"true\" \/&gt;<\/pre>\n<p>C\u00f3digo Modificado:<\/p>\n<pre class=\"lang:default decode:true \"> &lt;AutoCompleteTextView\r\n    android:id=\"@+id\/txtUsuario\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"wrap_content\"\r\n    android:hint=\"Usuario\"\r\n    android:inputType=\"text\"\r\n    android:maxLines=\"1\"\r\n    android:singleLine=\"true\" \/&gt;<\/pre>\n<p>Segundo modificamos la caja de texto de Contrase\u00f1a:<\/p>\n<p>C\u00f3digo Original:<\/p>\n<pre class=\"lang:default decode:true \">&lt;EditText\r\n android:id=\"@+id\/password\"\r\n android:layout_width=\"match_parent\"\r\n android:layout_height=\"wrap_content\"\r\n android:hint=\"@string\/prompt_password\"\r\n android:imeActionId=\"@+id\/login\"\r\n android:imeActionLabel=\"@string\/action_sign_in_short\"\r\n android:imeOptions=\"actionUnspecified\"\r\n android:inputType=\"textPassword\"\r\n android:maxLines=\"1\"\r\n android:singleLine=\"true\" \/&gt;<\/pre>\n<p>C\u00f3digo modificado:<\/p>\n<pre class=\"lang:default decode:true \">&lt;EditText\r\n android:id=\"@+id\/txtContrasena\"\r\n android:layout_width=\"match_parent\"\r\n android:layout_height=\"wrap_content\"\r\n android:hint=\"Contrase\u00f1a\"\r\n android:imeActionId=\"@+id\/login\"\r\n android:imeActionLabel=\"@string\/action_sign_in_short\"\r\n android:imeOptions=\"actionUnspecified\"\r\n android:inputType=\"textPassword\"\r\n android:maxLines=\"1\"\r\n android:singleLine=\"true\" \/&gt;<\/pre>\n<p>Por ultimo modificamos el Bot\u00f3n:<\/p>\n<p>C\u00f3digo original:<\/p>\n<pre class=\"lang:default decode:true \"> &lt;Button\r\n  android:id=\"@+id\/email_sign_in_button\"\r\n  style=\"?android:textAppearanceSmall\"\r\n  android:layout_width=\"match_parent\"\r\n  android:layout_height=\"wrap_content\"\r\n  android:layout_marginTop=\"16dp\"\r\n  android:text=\"@string\/action_sign_in\"\r\n  android:textStyle=\"bold\" \/&gt;<\/pre>\n<p>C\u00f3digo modificado:<\/p>\n<pre class=\"lang:default decode:true \">&lt;Button\r\n  android:id=\"@+id\/btnAcceso\"\r\n  style=\"?android:textAppearanceSmall\"\r\n  android:layout_width=\"match_parent\"\r\n  android:layout_height=\"wrap_content\"\r\n  android:layout_marginTop=\"16dp\"\r\n  android:text=\"Ingresar\"\r\n  android:textStyle=\"bold\" \/&gt;<\/pre>\n<h3><span style=\"color: #ff0000;\"><em><strong>Paso 5.<\/strong>\u00a0\u00a0<\/em><\/span><\/h3>\n<p>Ahora en la clase java de esta actividad llamada LoginActivity.java borraremos pr\u00e1cticamente todo el c\u00f3digo que se encuentra en ella quedando de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">public class LoginActivity extends AppCompatActivity{\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_login);\r\n        \r\n    }\r\n}<\/pre>\n<p>Ahora procedemos a darle acciones al bot\u00f3n para validar el usuario, el usuario y contrase\u00f1a estar\u00e1n en una variable, el c\u00f3digo quedara de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">public class LoginActivity extends AppCompatActivity{\r\n    \/\/creamos las variables con las que compararemos el acceso\r\n    String usuario=\"admon\";\r\n    String pass=\"123\";\r\n    \/\/cremamos los objetos para manipular la aplicacion\r\n    EditText txtUsuario, txtPassword;\r\n    Button btnAcceso;\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_login);\r\n        \/\/inicializamos los objetos java con los objetos xml\r\n        txtUsuario=(EditText)findViewById(R.id.txtUsuario);\r\n        txtPassword=(EditText)findViewById(R.id.txtContrasena);\r\n        btnAcceso=(Button) findViewById(R.id.btnAcceso);\r\n        \/\/damos accion al boton para validar\r\n        btnAcceso.setOnClickListener(new OnClickListener() {\r\n            @Override\r\n            public void onClick(View view) {\r\n                if(txtUsuario.getText().toString().equals(usuario) &amp;&amp;\r\n                        txtPassword.getText().toString().equals(pass)){\r\n                   Intent intento = new Intent(getApplicationContext(), PrincipalActivity.class);\r\n                    startActivity(intento);\r\n                    finish();\r\n                }else{\r\n                    Snackbar.make(view, \"Usuario y\/o Password incorrecto\", Snackbar.LENGTH_LONG)\r\n                            .setAction(\"Action\", null).show();\r\n                }\r\n            }\r\n        });\r\n\r\n    }\r\n}<\/pre>\n<p>Nota: marcara error en PrincipalActivity.class, este se quitara en el paso siguiente.<\/p>\n<h3><span style=\"color: #ff0000;\"><em><strong>Paso 6.\u00a0<\/strong><\/em><\/span><\/h3>\n<p><span style=\"color: #ff0000;\"><span style=\"color: #000000;\">Crearemos la Actividad Principal la cual sera del tipo <strong>NavigationDrawerActivity <\/strong>la cual llamaremos<strong> PrincipalActivity:<\/strong><\/span><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-311 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita9-300x224.png\" alt=\"\" width=\"300\" height=\"224\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita9-300x224.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita9.png 767w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-312 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita10-300x240.png\" alt=\"\" width=\"300\" height=\"240\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita10-300x240.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita10-768x614.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita10.png 818w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Ahora procederemos a modificar la actividad para que quede a nuestro gusto empezaremos con modificar la barra lateral de navegacion de esta Actividad:<\/p>\n<p><strong>Paso a:<\/strong> cambiaremos la imagen y titulo de la barra de navegacion en el archivo llamado nav_header_principal.xml ubicado en la carpeta Layaout:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-313 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita11-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita11-300x169.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita11-768x432.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita11-1024x576.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita11.png 1366w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>las flechas rojas indican la ubicaci\u00f3n del archivo y las propiedades que cambiaremos quedando el c\u00f3digo ya modificado de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"@dimen\/nav_header_height\"\r\n    android:background=\"@drawable\/side_nav_bar\"\r\n    android:gravity=\"bottom\"\r\n    android:orientation=\"vertical\"\r\n    android:paddingBottom=\"@dimen\/activity_vertical_margin\"\r\n    android:paddingLeft=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingRight=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingTop=\"@dimen\/activity_vertical_margin\"\r\n    android:theme=\"@style\/ThemeOverlay.AppCompat.Dark\"&gt;\r\n\r\n    &lt;ImageView\r\n        android:id=\"@+id\/imageView\"\r\n        android:layout_width=\"80dp\"\r\n        android:layout_height=\"80dp\"\r\n        android:paddingTop=\"@dimen\/nav_header_vertical_spacing\"\r\n        app:srcCompat=\"@drawable\/barcode\" \/&gt;\r\n\r\n    &lt;TextView\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:paddingTop=\"@dimen\/nav_header_vertical_spacing\"\r\n        android:text=\"MiTiendita\"\r\n        android:textAppearance=\"@style\/TextAppearance.AppCompat.Body1\" \/&gt;\r\n\r\n    &lt;TextView\r\n        android:id=\"@+id\/textView\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"Profeluismitre.com\/Ejemplos\" \/&gt;\r\n\r\n&lt;\/LinearLayout&gt;<\/pre>\n<p><strong>Paso b:\u00a0<\/strong>ahora cambiaremos las opciones que aparecer\u00e1n en el men\u00fa deslizable, este archivo se encuentra en la carpeta <strong>menu<\/strong> y este se llama <strong>activity_principal_drawer.xml<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-314 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita12-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita12-300x169.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita12-768x432.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita12-1024x576.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita12.png 1366w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>dentro de este estan los menus u opciones las cuales las modificaremos quedando de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;menu xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"&gt;\r\n\r\n    &lt;group android:checkableBehavior=\"single\"&gt;\r\n        &lt;item\r\n            android:id=\"@+id\/nav_principal\"\r\n            android:icon=\"@drawable\/ic_menu_camera\"\r\n            android:title=\"Principal\" \/&gt;\r\n        &lt;item\r\n            android:id=\"@+id\/nav_registrar\"\r\n            android:icon=\"@drawable\/ic_menu_gallery\"\r\n            android:title=\"Registrar\" \/&gt;\r\n        &lt;item\r\n            android:id=\"@+id\/nav_consultar\"\r\n            android:icon=\"@drawable\/ic_menu_slideshow\"\r\n            android:title=\"Consultar\" \/&gt;\r\n        &lt;item\r\n            android:id=\"@+id\/nav_ventas\"\r\n            android:icon=\"@drawable\/ic_menu_manage\"\r\n            android:title=\"Ventas\" \/&gt;\r\n        &lt;item\r\n            android:id=\"@+id\/nav_inventario\"\r\n            android:icon=\"@drawable\/ic_menu_share\"\r\n            android:title=\"Inventario\" \/&gt;\r\n    &lt;\/group&gt;\r\n\r\n    \r\n\r\n&lt;\/menu&gt;\r\n<\/pre>\n<p><strong>Paso c:\u00a0<\/strong>para evitar que nos marque error nuestra actividad Principal por haber modificado los menus iremos al Archivo <strong>PrincipalActivity.java\u00a0<\/strong>en el cual ubicaremos un metodo llamado:\u00a0<strong>onNavigationItemSelected(MenuItem item)\u00a0<\/strong>el cual modificaremos quedando de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \"> public boolean onNavigationItemSelected(MenuItem item) {\r\n        \/\/ Handle navigation view item clicks here.\r\n        int id = item.getItemId();\r\n\r\n        if (id == R.id.nav_principal) {\r\n            \/\/ Handle the camera action\r\n        } else if (id == R.id.nav_registrar) {\r\n\r\n        } else if (id == R.id.nav_consultar) {\r\n\r\n        } else if (id == R.id.nav_ventas) {\r\n\r\n        } else if (id == R.id.nav_inventario) {\r\n\r\n        }\r\n\r\n        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);\r\n        drawer.closeDrawer(GravityCompat.START);\r\n        return true;\r\n    }<\/pre>\n<p>este m\u00e9todo es el que nos ayudara a movernos entre ventanas.<\/p>\n<h3 style=\"text-align: center;\"><span style=\"color: #ff0000;\"><strong>Hasta este momento nuestra aplicaci\u00f3n ya funciona podemos ejecutarla y ver su comportamiento.<\/strong><\/span><\/h3>\n<p>&nbsp;<\/p>\n<h3><em><strong><span style=\"color: #ff0000;\">Paso 7.\u00a0\u00a0<\/span><\/strong><\/em><\/h3>\n<p><span style=\"color: #000000;\">Ahora crearemos los fragmentos que ser\u00e1n las subVentanas que pondremos en nuestra actividad principal que son las que har\u00e1n las funciones de nuestra aplicaci\u00f3n.<\/span><\/p>\n<p>Creamos el primer fragmento el cual se llamara PortadaFragment dando click derecho sobre <strong>APP<\/strong> y luego en <strong>fragment<\/strong> y posteriormente en Fragment(Blank):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-316 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita13-300x261.png\" alt=\"\" width=\"300\" height=\"261\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita13-300x261.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita13.png 656w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-317 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita14-300x240.png\" alt=\"\" width=\"300\" height=\"240\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita14-300x240.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita14-768x615.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita14.png 818w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>una vez creado el fragmenta al igual que las activities se generan 2 archivos un XML y otro JAVA por el momento modificaremos el archivo JAVA borrando la mayor parte del c\u00f3digo solo quedara lo siguiente:<\/p>\n<pre class=\"lang:default decode:true \">public class PortadaFragment extends Fragment {   \r\n\r\n    @Override\r\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\r\n                             Bundle savedInstanceState) {\r\n        \/\/ Inflate the layout for this fragment\r\n        return inflater.inflate(R.layout.fragment_portada, container, false);\r\n    }\r\n}<\/pre>\n<p>lo mismo haremos con los fragmentos restantes llamados:<\/p>\n<ol>\n<li>RegistrarFragment<\/li>\n<li>ConsultarFragment<\/li>\n<li>VentasFragment<\/li>\n<li>InventarioFragment<\/li>\n<\/ol>\n<p>aplicando el mismo procedimiento que el anterior.<\/p>\n<h3><span style=\"color: #ff0000;\"><em><strong>Paso 8.<\/strong><\/em><\/span><\/h3>\n<p><span style=\"color: #000000;\">una vez creado todos los fragmentos procederemos a poner los componente visuales en cada fragmento para visualizar en cada ventana:<\/span><\/p>\n<p><strong>Fragmento Portada:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:orientation=\"vertical\"\r\n        android:gravity=\"center|top\"&gt;\r\n\r\n        &lt;TextView\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:text=\"Mi Tiendita\"\r\n            android:gravity=\"center\"\r\n            android:textSize=\"25dp\"\r\n            android:layout_marginTop=\"20dp\"\r\n            \/&gt;\r\n        &lt;ImageView\r\n            android:layout_width=\"200dp\"\r\n            android:layout_height=\"300dp\"\r\n            android:src=\"@drawable\/barcode\"\r\n            android:layout_marginTop=\"25dp\"\/&gt;\r\n        &lt;TextView\r\n            android:layout_marginTop=\"20dp\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:text=\"Hecho por Luis Mitre\"\/&gt;\r\n\r\n\r\n\r\n    &lt;\/LinearLayout&gt;\r\n\r\n<\/pre>\n<p>Nota: el codigo tendras que copiarlo entre las etiquetas de &lt;FrameLayout&gt; y\u00a0&lt;\/FrameLayout&gt; ya que son las que marcan el inicio y el fin del fragmento<\/p>\n<p><strong>Fragmento Registrar:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:orientation=\"vertical\"\r\n        android:gravity=\"center|top\"&gt;\r\n\r\n        &lt;TextView\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:text=\"Registro de productos\"\r\n            android:textSize=\"30dp\"\r\n            android:paddingTop=\"25dp\"\/&gt;\r\n\r\n        &lt;LinearLayout\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:orientation=\"horizontal\"\r\n            android:gravity=\"center\"\r\n            android:layout_weight=\"1\"\r\n            android:paddingTop=\"30dp\"&gt;\r\n            &lt;TextView\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Codigo:\"\r\n                android:textSize=\"25dp\"\/&gt;\r\n\r\n            &lt;EditText\r\n                android:id=\"@+id\/txtCodigoRegistro\"\r\n                android:layout_width=\"150dp\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:inputType=\"number\" \/&gt;\r\n\r\n            &lt;Button\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Scaner\"\r\n                android:textSize=\"25dp\"\r\n                android:id=\"@+id\/btnScanerRegistro\"\/&gt;\r\n        &lt;\/LinearLayout&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:paddingTop=\"30dp\"\r\n        android:gravity=\"center\"\r\n        android:orientation=\"vertical\"&gt;\r\n        &lt;TextView\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:text=\"Descripcion\"\r\n            android:gravity=\"center\"\r\n            android:textSize=\"25dp\"\/&gt;\r\n        &lt;EditText\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:textSize=\"20dp\"\r\n            android:inputType=\"text\"\r\n            android:id=\"@+id\/txtDesRegistro\"\/&gt;\r\n\r\n    &lt;\/LinearLayout&gt;\r\n        &lt;LinearLayout\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:paddingTop=\"30dp\"\r\n            android:gravity=\"center\"\r\n            android:orientation=\"vertical\"&gt;\r\n            &lt;TextView\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Cantidad\"\r\n                android:gravity=\"center\"\r\n                android:textSize=\"25dp\"\/&gt;\r\n            &lt;EditText\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:textSize=\"20dp\"\r\n                android:inputType=\"text\"\r\n                android:id=\"@+id\/txtCantRegistro\"\/&gt;\r\n\r\n        &lt;\/LinearLayout&gt;\r\n        &lt;LinearLayout\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:paddingTop=\"30dp\"\r\n            android:gravity=\"center\"\r\n            android:orientation=\"vertical\"&gt;\r\n            &lt;TextView\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Precio Venta\"\r\n                android:gravity=\"center\"\r\n                android:textSize=\"25dp\"\/&gt;\r\n            &lt;EditText\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:textSize=\"20dp\"\r\n                android:inputType=\"text\"\r\n                android:id=\"@+id\/txtPresRegistro\"\/&gt;\r\n\r\n        &lt;\/LinearLayout&gt;\r\n\r\n        &lt;LinearLayout\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:paddingTop=\"30dp\"\r\n            android:gravity=\"center\"\r\n            android:layout_weight=\"1\"\r\n            android:orientation=\"horizontal\"&gt;\r\n            &lt;Button\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Cancelar\"\r\n                android:textSize=\"30dp\"\r\n                android:id=\"@+id\/btnCancelarReg\"\/&gt;\r\n            &lt;Button\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Grabar\"\r\n                android:textSize=\"30dp\"\r\n                android:id=\"@+id\/btnGrabarReg\"\/&gt;\r\n        &lt;\/LinearLayout&gt;\r\n    &lt;\/LinearLayout&gt;<\/pre>\n<p><strong>Fragmento Consultar:<\/strong><\/p>\n<pre class=\"lang:default decode:true \"> &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:orientation=\"vertical\"&gt;\r\n\r\n\r\n            &lt;EditText\r\n                android:id=\"@+id\/txtDescConsultar\"\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"50dp\"\r\n                android:hint=\"Descripcion\"\r\n                android:textSize=\"30dp\"\r\n                android:inputType=\"text\" \/&gt;\r\n\r\n            &lt;Button\r\n                android:id=\"@+id\/btnBusCons\"\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:text=\"Buscar\"\r\n                android:textSize=\"20dp\"\/&gt;\r\n\r\n\r\n\r\n        &lt;ListView\r\n            android:id=\"@+id\/listaConsultas\"\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:divider=\"#FFCC00\"\r\n            android:dividerHeight=\"4px\"\r\n            android:paddingTop=\"30dp\"&gt;\r\n\r\n        &lt;\/ListView&gt;\r\n    &lt;\/LinearLayout&gt;<\/pre>\n<p><strong>Fragmento Ventas:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">&lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:orientation=\"vertical\"\r\n        android:gravity=\"center|top\"\r\n        android:layout_marginTop=\"15dp\"&gt;\r\n\r\n\r\n        &lt;android.support.design.widget.TextInputLayout\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"&gt;\r\n\r\n            &lt;AutoCompleteTextView\r\n                android:id=\"@+id\/txtCodigoVentas\"\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:textSize=\"30dp\"\r\n                android:hint=\"Codigo\"\r\n                android:inputType=\"number\"\r\n                android:maxLines=\"1\"\r\n                android:singleLine=\"true\" \/&gt;\r\n\r\n        &lt;\/android.support.design.widget.TextInputLayout&gt;\r\n\r\n        &lt;Button\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:drawableRight=\"@drawable\/iconoqr\"\r\n            android:drawablePadding=\"8dp\"\r\n            android:textColor=\"@android:color\/black\"\r\n            android:backgroundTint=\"#BBF4FA\"\r\n            android:text=\"Escanear\"\r\n            android:textSize=\"20dp\"\r\n            android:layout_marginTop=\"10dp\"\r\n            android:layout_centerVertical=\"true\"\r\n            android:layout_centerHorizontal=\"true\"\r\n            android:id=\"@+id\/btnScanerVentas\"\/&gt;\r\n\r\n        &lt;LinearLayout\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:orientation=\"vertical\"\r\n            android:gravity=\"center|top\"\r\n            android:layout_marginTop=\"15dp\"&gt;\r\n            &lt;ListView\r\n                android:id=\"@+id\/listaVentas\"\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:paddingTop=\"20dp\"\r\n                android:divider=\"#E4E5E4\"\r\n                android:layout_weight=\"10\"\r\n                android:dividerHeight=\"4px\"&gt;\r\n\r\n            &lt;\/ListView&gt;\r\n            &lt;Button\r\n                android:id=\"@+id\/btnCobrarVentas\"\r\n                android:layout_width=\"match_parent\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:drawableRight=\"@drawable\/iconocaja\"\r\n                android:drawablePadding=\"8dp\"\r\n                android:textColor=\"@android:color\/black\"\r\n                android:backgroundTint=\"#BBF4FA\"\r\n                android:text=\"Cobrar\"\r\n                android:textSize=\"20dp\"\r\n                android:layout_marginTop=\"10dp\"\r\n                android:layout_centerVertical=\"true\"\r\n                android:layout_centerHorizontal=\"true\"\/&gt;\r\n        &lt;\/LinearLayout&gt;\r\n\r\n    &lt;\/LinearLayout&gt;<\/pre>\n<p><strong>Fragmento Inventario:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:orientation=\"vertical\"\r\n        android:gravity=\"center|top\"&gt;\r\n                &lt;ListView\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"match_parent\"\r\n            android:paddingTop=\"30dp\"\r\n            android:divider=\"#FFCC00\"\r\n            android:dividerHeight=\"4px\"\r\n            android:id=\"@+id\/listaInventario\"&gt;\r\n\r\n        &lt;\/ListView&gt;\r\n\r\n    &lt;\/LinearLayout&gt;<\/pre>\n<h3><span style=\"color: #ff0000;\"><em><strong>Paso 9.<\/strong><\/em><\/span><\/h3>\n<p><span style=\"color: #000000;\">Ahora ya que tenemos los fragmentos listo procederemos a crear una clase que es la que nos permitir\u00e1 insertar los fragmentos en la Actividad Principal para ello crearemos un paquete llamado <strong>Librerias\u00a0<\/strong>:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-319 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita15-300x300.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita15-300x300.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita15-150x150.png 150w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita15.png 513w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-320 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita16-268x300.png\" alt=\"\" width=\"268\" height=\"300\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita16-268x300.png 268w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita16.png 410w\" sizes=\"auto, (max-width: 268px) 100vw, 268px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-321 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita17-300x106.png\" alt=\"\" width=\"300\" height=\"106\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita17-300x106.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita17.png 436w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>ahora dentro del paquete <b>librer\u00edas<\/b>\u00a0creamos la clase llamada\u00a0 \u00a0<strong>NonSwipeableViewPager <\/strong>la cual nos permitir\u00e1 insertar los fragmentos a nuestra actividad<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-322 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita18-300x300.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita18-300x300.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita18-150x150.png 150w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita18.png 554w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-323 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita19-300x244.png\" alt=\"\" width=\"300\" height=\"244\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita19-300x244.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita19.png 547w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>una vez creada la clase pondremos el siguiente c\u00f3digo:<\/p>\n<pre class=\"lang:default decode:true \">public class NonSwipeableViewPager extends ViewPager {\r\n\r\n    public NonSwipeableViewPager(Context context) {\r\n        super(context);\r\n        setMyScroller();\r\n    }\r\n\r\n    public NonSwipeableViewPager(Context context, AttributeSet attrs) {\r\n        super(context, attrs);\r\n        setMyScroller();\r\n    }\r\n\r\n    @Override\r\n    public boolean onInterceptTouchEvent(MotionEvent event) {\r\n        \/\/ Never allow swiping to switch between pages\r\n        return false;\r\n    }\r\n\r\n    @Override\r\n    public boolean onTouchEvent(MotionEvent event) {\r\n        \/\/ Never allow swiping to switch between pages\r\n        return false;\r\n    }\r\n\r\n    \/\/down one is added for smooth scrolling\r\n\r\n    private void setMyScroller() {\r\n        try {\r\n            Class&lt;?&gt; viewpager = ViewPager.class;\r\n            Field scroller = viewpager.getDeclaredField(\"mScroller\");\r\n            scroller.setAccessible(true);\r\n            scroller.set(this, new MyScroller(getContext()));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n\r\n    public class MyScroller extends Scroller {\r\n        public MyScroller(Context context) {\r\n            super(context, new DecelerateInterpolator());\r\n        }\r\n\r\n        @Override\r\n        public void startScroll(int startX, int startY, int dx, int dy, int duration) {\r\n            super.startScroll(startX, startY, dx, dy, 350 \/*1 secs*\/);\r\n        }\r\n    }\r\n}<\/pre>\n<p>ahora en el archivo xml llamada <strong>contentPrincipal<\/strong> en la carpeta <strong>layout<\/strong> agregamos el siguiente componente que es la clase que creamos:<\/p>\n<pre class=\"lang:default decode:true \">&lt;librerias.NonSwipeableViewPager\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        android:id=\"@+id\/paginador\"&gt;\r\n    &lt;\/librerias.NonSwipeableViewPager&gt;<\/pre>\n<h3><span style=\"color: #ff0000;\">Paso 10.<\/span><\/h3>\n<p><span style=\"color: #000000;\">Una vez que hayamos creado la clase anterior y la hayamos agregado al content principal procedemos a crear una clase que sera la encargada de indicarnos cual fragmento se tiene que observar al igual este nos permitir\u00e1 estar cambi\u00e1ndolos, esta clase sera llamada <strong>PaginasAdapter<\/strong> y la crearemos dentro del paquete <strong>librerias<\/strong>. la cual quedar\u00eda de la siguiente manera:<\/span><\/p>\n<pre class=\"lang:default decode:true\">public class PaginasAdapter extends FragmentStatePagerAdapter {\r\n    int mNumOfTabs;\r\n\r\n    public PaginasAdapter(FragmentManager fm, int NumOfTabs) {\r\n        super(fm);\r\n        this.mNumOfTabs = NumOfTabs;\r\n    }\r\n\r\n    @Override\r\n    public Fragment getItem(int position) {\r\n\r\n        switch (position) {\r\n            case 0:\r\n                PortadaFragment tab0 = new PortadaFragment();\r\n                return tab0;\r\n            case 1:\r\n                RegistrarFragment tab1 = new RegistrarFragment();\r\n                return tab1;\r\n            case 2:\r\n                ConsultarFragment tab2 = new ConsultarFragment();\r\n                return tab2;\r\n            case 3:\r\n                VentasFragment tab3 = new VentasFragment();\r\n                return tab3;\r\n            case 4:\r\n                InventarioFragment tab4 = new InventarioFragment();\r\n                return tab4;\r\n\r\n            default:\r\n                return null;\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public int getCount() {\r\n        return mNumOfTabs;\r\n    }<\/pre>\n<p>Nota: te\u00a0 marcara error en los nombres de los fragmentos, recuerda que solo hay que importarlos.<\/p>\n<p>ahora en la clase Java <strong>PrincipalActivity.java\u00a0<\/strong>modificamos el codigo para que podamos cambiar de fragmentos quedando la clase de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true\"> ViewPager viewpager;  \/\/objeto para mostrar los fragmentos\r\n    PaginasAdapter adapterpg; \/\/objeto para cambiar de fragmento\r\n    DrawerLayout drawer; \/\/objeto que \u00b4permite mostrar la barra deslizable\r\n    Toolbar toolbar; \/\/Barra donde se pone el icono de la barra deslizable\r\n    ActionBarDrawerToggle toggle; \/\/objeto que permite manipular la Barra deslizable\r\n    NavigationView navigationView; \/\/objeto que me permite elegir en el menu\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_principal);\r\n        toolbar = (Toolbar) findViewById(R.id.toolbar);\r\n        setSupportActionBar(toolbar);\r\n\r\n\r\n\r\n        drawer = (DrawerLayout) findViewById(R.id.drawer_layout);\r\n\r\n        viewpager=(ViewPager) findViewById(R.id.paginador);\r\n        \/\/inicializamos el objeto Pager con la cantidad de ventanas a manipular\r\n        adapterpg=new PaginasAdapter(getSupportFragmentManager(), 5);\r\n        viewpager.setAdapter(adapterpg);\r\n        viewpager.setEnabled(false);\r\n        \r\n        toggle = new ActionBarDrawerToggle(\r\n                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);\r\n        drawer.setDrawerListener(toggle);\r\n        toggle.syncState();\r\n\r\n        navigationView = (NavigationView) findViewById(R.id.nav_view);\r\n        navigationView.setNavigationItemSelectedListener(this);\r\n    }\r\n\r\n    @Override\r\n    public void onBackPressed() {\r\n        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);\r\n        if (drawer.isDrawerOpen(GravityCompat.START)) {\r\n            drawer.closeDrawer(GravityCompat.START);\r\n        } else {\r\n            super.onBackPressed();\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public boolean onCreateOptionsMenu(Menu menu) {\r\n        \/\/ Inflate the menu; this adds items to the action bar if it is present.\r\n        getMenuInflater().inflate(R.menu.principal, menu);\r\n        return true;\r\n    }\r\n\r\n    @Override\r\n    public boolean onOptionsItemSelected(MenuItem item) {\r\n        \/\/ Handle action bar item clicks here. The action bar will\r\n        \/\/ automatically handle clicks on the Home\/Up button, so long\r\n        \/\/ as you specify a parent activity in AndroidManifest.xml.\r\n        int id = item.getItemId();\r\n\r\n        \/\/noinspection SimplifiableIfStatement\r\n        if (id == R.id.action_settings) {\r\n            return true;\r\n        }\r\n\r\n        return super.onOptionsItemSelected(item);\r\n    }\r\n\r\n    @SuppressWarnings(\"StatementWithEmptyBody\")\r\n    @Override\r\n    public boolean onNavigationItemSelected(MenuItem item) {\r\n        \/\/ Handle navigation view item clicks here.\r\n        int id = item.getItemId();\r\n\r\n        if (id == R.id.nav_principal) {\r\n          viewpager.setCurrentItem(0);\r\n          toolbar.setTitle(\"Portada\");\r\n        } else if (id == R.id.nav_registrar) {\r\n            viewpager.setCurrentItem(1);\r\n            toolbar.setTitle(\"Registrar\");\r\n        } else if (id == R.id.nav_consultar) {\r\n            viewpager.setCurrentItem(2);\r\n            toolbar.setTitle(\"Consultar\");\r\n        } else if (id == R.id.nav_ventas) {\r\n            viewpager.setCurrentItem(3);\r\n            toolbar.setTitle(\"Ventas\");\r\n        } else if (id == R.id.nav_inventario) {\r\n            viewpager.setCurrentItem(4);\r\n            toolbar.setTitle(\"Inventario\");\r\n        }\r\n\r\n        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);\r\n        drawer.closeDrawer(GravityCompat.START);\r\n        return true;\r\n    }<\/pre>\n<p>Nota: si observamos los cambios solo se hicieron en el metodo <strong>onCreate<\/strong> y en el metodo <strong>onNavigationItemSelected.<\/strong><\/p>\n<h4 style=\"text-align: center;\"><span style=\"color: #ff0000;\">En este momento si corres la aplicaci\u00f3n\u00a0observaras el fragmento portada y al abrir la barra de navegaci\u00f3n\u00a0que esta al lado izquierdo y seleccionando los men\u00fas\u00a0cambiaran los fragmentos, ahora solo falta dar las acciones para que nuestra aplicaci\u00f3n\u00a0funcione completamente.<\/span><\/h4>\n<h3><span style=\"color: #ff0000;\">Paso 11.<\/span><\/h3>\n<p><span style=\"color: #000000;\">Para poder continuar tendremos que descargar unas librer\u00edas que ser\u00e1n necesarias para que podamos usar la funci\u00f3n de escaneo por c\u00f3digo de barras la cual la obtenemos de la pagina:\u00a0<a href=\"https:\/\/github.com\/zxing\/zxing\">https:\/\/github.com\/zxing\/zxing<\/a><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-324 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita20-300x169.png\" alt=\"\" width=\"300\" height=\"169\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita20-300x169.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita20-768x432.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita20-1024x576.png 1024w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita20.png 1366w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>al descargar el archivo comprimido, extraemos su contenido quedando una carpeta llamada <strong>zxing-master <\/strong>la cual abriremos y entraremos a la siguiente ruta:<\/p>\n<p><strong>zxing-master\\android-integration\\src\\main\\java\\com\\google\\zxing\\integration\\android<\/strong><\/p>\n<p>dentro de esta encontraremos dos archivos llamados: <strong>IntentIntegrator<\/strong> e <strong>IntentResult\u00a0<\/strong>los cuales copiaremos seleccion\u00e1ndolos y oprimiendo las teclas de <strong>CTRL+C\u00a0<\/strong>una vez hecho esto nos vamos a nuestro android studio y en la carpeta librerias daremos Click Derecho Pegar y aparecera una ventana como la siguiente en la cual le daremos <strong>OK<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-325 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita21-300x112.png\" alt=\"\" width=\"300\" height=\"112\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita21-300x112.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita21.png 570w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>con esto se habran copiado las dos clases que son las necesarias para activar el lector de codigo de barras.<\/p>\n<h3><span style=\"color: #ff0000;\"><strong>Paso 12.<\/strong><\/span><\/h3>\n<p>Para poder iniciar con las acciones de cada una de los fragmentos crearemos unas clases que seran de ayuda y de gran utilidad para nuestra aplicaci\u00f3n y unos archivos XML para su funcionamiento.\u00a0 todas las clases ser\u00e1n creadas en la carpeta <strong>librerias,<\/strong> y los Archivos <strong>XML<\/strong> en la carpet<strong>a layout.<\/strong><\/p>\n<p>Inciamos con los Archivos XML, damos Click derecho sobre la carpeta layout y en <strong>New-XML-Layout XML File<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-326 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita22-300x268.png\" alt=\"\" width=\"300\" height=\"268\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita22-300x268.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita22.png 602w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Le pondremos el nombre de elementos_lista:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-327 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita23-300x239.png\" alt=\"\" width=\"300\" height=\"239\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita23-300x239.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita23-768x613.png 768w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita23.png 818w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>y su c\u00f3digo quedar\u00eda de la siguiente manera, el cual se utilizara para poder poner la informaci\u00f3n de los productos dentro de la ListView que se encuentra en <strong>Inventario<\/strong> y en <strong>Consultar<\/strong>:<\/p>\n<pre class=\"lang:default decode:true\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    android:orientation=\"vertical\"\r\n    android:gravity=\"center|top\"&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"&gt;\r\n        &lt;TextView\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"left\"\r\n            android:text=\"Codigo:\"\r\n            android:textSize=\"25dp\"\/&gt;\r\n        &lt;TextView\r\n            android:id=\"@+id\/txtCodLista\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"center\"\r\n            android:text=\"Codigo\"\r\n            android:layout_weight=\"1\"\r\n            android:textSize=\"25dp\"\/&gt;\r\n    &lt;\/LinearLayout&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:orientation=\"vertical\"&gt;\r\n        &lt;TextView\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"left\"\r\n            android:text=\"Descripcion del Producto\"\r\n            android:textSize=\"20dp\"\/&gt;\r\n        &lt;TextView\r\n            android:id=\"@+id\/txtDescLista\"\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"center\"\r\n            android:text=\"a\"\r\n            android:textSize=\"20dp\"\/&gt;\r\n    &lt;\/LinearLayout&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"&gt;\r\n        &lt;TextView\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"left\"\r\n            android:text=\"Precio:\"\r\n            android:textSize=\"20dp\"\/&gt;\r\n        &lt;TextView\r\n            android:id=\"@+id\/txtPrecLista\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"center\"\r\n            android:text=\"Precio\"\r\n            android:layout_weight=\"1\"\r\n            android:textSize=\"20dp\"\/&gt;\r\n    &lt;\/LinearLayout&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"&gt;\r\n        &lt;TextView\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"left\"\r\n            android:text=\"Cantidad:\"\r\n            android:textSize=\"20dp\"\/&gt;\r\n        &lt;TextView\r\n            android:id=\"@+id\/txtCantLista\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"center\"\r\n            android:text=\"Cantidad\"\r\n            android:layout_weight=\"1\"\r\n            android:textSize=\"20dp\"\/&gt;\r\n    &lt;\/LinearLayout&gt;\r\n\r\n\r\n&lt;\/LinearLayout&gt;<\/pre>\n<p>con el mismo procedimiento ahora creamos el archivo XML llamado: <strong>elementos_ventas_lista.xml<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    android:orientation=\"vertical\"\r\n    android:gravity=\"center|top\"&gt;\r\n    &lt;TextView\r\n        android:id=\"@+id\/txtCodVent\"\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:gravity=\"center\"\r\n        android:text=\"Codigo\"\r\n        android:textSize=\"20dp\"\/&gt;\r\n    &lt;TextView\r\n        android:id=\"@+id\/txtDescVent\"\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:gravity=\"left\"\r\n        android:text=\"DescripcionProducto\"\r\n        android:textSize=\"20dp\"\/&gt;\r\n    &lt;LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"&gt;\r\n        &lt;TextView\r\n            android:id=\"@+id\/txtPrecVent\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"left\"\r\n            android:textSize=\"20dp\"\r\n            android:text=\"$ 00.00\"\/&gt;\r\n        &lt;librerias.NoSeleccionableSpinner\r\n            android:id=\"@+id\/spinListVent\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:textSize=\"20dp\"\r\n            android:paddingLeft=\"150dp\"\r\n            android:layout_weight=\"1\"\r\n            android:layout_gravity=\"left\"&gt;\r\n\r\n        &lt;\/librerias.NoSeleccionableSpinner&gt;\r\n    &lt;\/LinearLayout&gt;\r\n    &lt;Button\r\n        android:id=\"@+id\/btnAgregarVentas\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"Agregar\"\r\n        android:textSize=\"15dp\"\/&gt;\r\n\r\n&lt;\/LinearLayout&gt;<\/pre>\n<p>con el mismo procemiento ahora creamos el archivo XML llamado: <strong>dialogo_buscar.xml<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"100dp\"\r\n    android:gravity=\"center|top\"\r\n\r\n    android:orientation=\"vertical\" &gt;\r\n\r\n    &lt;ProgressBar\r\n        android:id=\"@+id\/progressBar\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:layout_gravity=\"center_horizontal\"\/&gt;\r\n\r\n    &lt;TextView\r\n        android:id=\"@+id\/textView1\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"Buscando\"\r\n        android:textStyle=\"bold\"\r\n        android:textSize=\"20dp\"\r\n        android:gravity=\"center\"\r\n        android:textColor=\"@android:color\/holo_green_light\"\r\n        android:layout_marginTop=\"8dp\"\/&gt;\r\n&lt;\/LinearLayout&gt;<\/pre>\n<p>con el mismo procemiento ahora creamos el archivo XML llamado: <strong>dialogo_grabando.xml<\/strong><\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"100dp\"\r\n    android:gravity=\"center|top\"\r\n\r\n    android:orientation=\"vertical\" &gt;\r\n\r\n    &lt;ProgressBar\r\n        android:id=\"@+id\/progressBar\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:layout_gravity=\"center_horizontal\"\/&gt;\r\n\r\n    &lt;TextView\r\n        android:id=\"@+id\/textView1\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"Grabando Datos\"\r\n        android:textStyle=\"bold\"\r\n        android:textSize=\"20dp\"\r\n        android:gravity=\"center\"\r\n        android:textColor=\"@android:color\/holo_green_light\"\r\n        android:layout_marginTop=\"8dp\"\/&gt;\r\n&lt;\/LinearLayout&gt;<\/pre>\n<p>ahora crearemos las clases Java iniciamos con Producto:<\/p>\n<p><strong>Clase Producto:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">public class Producto  {\r\n    String codigo;\r\n    String descripcion;\r\n    String precio;\r\n    int cantidad;\r\n\r\n    public Producto(String codigo, String descripcion, String precio, int cantidad) {\r\n        this.codigo = codigo;\r\n        this.descripcion = descripcion;\r\n        this.precio = precio;\r\n        this.cantidad = cantidad;\r\n    }\r\n\r\n    public String getCodigo() {\r\n        return codigo;\r\n    }\r\n\r\n    public void setCodigo(String codigo) {\r\n        this.codigo = codigo;\r\n    }\r\n\r\n    public String getDescripcion() {\r\n        return descripcion;\r\n    }\r\n\r\n    public void setDescripcion(String descripcion) {\r\n        this.descripcion = descripcion;\r\n    }\r\n\r\n    public String getPrecio() {\r\n        return precio;\r\n    }\r\n\r\n    public void setPrecio(String precio) {\r\n        this.precio = precio;\r\n    }\r\n\r\n    public int getCantidad() {\r\n        return cantidad;\r\n    }\r\n\r\n    public void setCantidad(int cantidad) {\r\n        this.cantidad = cantidad;\r\n    }\r\n}<\/pre>\n<p><strong>Clase ListaAdapter:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">import android.content.Context;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.ArrayAdapter;\r\nimport android.widget.TextView;\r\n\r\nimport com.profeluismitre.mitienda.R;\r\n\r\npublic class ListaAdapter  extends ArrayAdapter&lt;Producto&gt; {\r\n\r\n    public ListaAdapter(Context context) {\r\n        super(context, R.layout.elementos_lista,R.id.txtCodLista);\r\n    }\r\n    public View getView(int position, View convertView, ViewGroup parent) {\r\n        View view = super.getView(position, convertView, parent);\r\n        TextView txtCodigo= (TextView) view.findViewById(R.id.txtCodLista);\r\n        TextView txtDescripcion=(TextView) view.findViewById(R.id.txtDescLista);\r\n        TextView txtPrecio=(TextView) view.findViewById(R.id.txtPrecLista);\r\n        TextView txtCantidad=(TextView) view.findViewById(R.id.txtCantLista);\r\n        Producto prod = getItem(position);\r\n        txtCodigo.setText(prod.getCodigo());\r\n        txtDescripcion.setText(prod.getDescripcion());\r\n        txtPrecio.setText(prod.getPrecio());\r\n        txtCantidad.setText(String.valueOf(prod.getCantidad()));\r\n        return view;\r\n    }\r\n\r\n\r\n}<\/pre>\n<p>Nota: En los import de la clase deberas cambiar el nombre del paquete del Import com.profeluismitre.mitienda.R\u00a0 por el nombre del paquete de tu proyecto y lo terminas con la R mayuscula.<\/p>\n<p><strong>Clase MiBaseDatos:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">public class MiBaseDatos {\r\n    public static ArrayList&lt;Producto&gt; productos=new ArrayList();\r\n    public static String codigo;\r\n    public static boolean escaneo=false;\r\n}<\/pre>\n<p><strong>Clase NoSeleccionableSpinner:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">public class NoSeleccionableSpinner extends android.support.v7.widget.AppCompatSpinner {\r\n    public NoSeleccionableSpinner(Context context) {\r\n        super(context);\r\n    }\r\n\r\n    public NoSeleccionableSpinner(Context context, AttributeSet attrs) {\r\n        super(context, attrs);\r\n    }\r\n\r\n    public NoSeleccionableSpinner(Context context, AttributeSet attrs, int defStyle) {\r\n        super(context, attrs, defStyle);\r\n    }\r\n\r\n    @Override\r\n    public void setPressed(boolean pressed) {\r\n        \/\/ Make sure the parent is a View prior casting it to View\r\n        if (pressed &amp;&amp; getParent() instanceof View &amp;&amp; ((View) getParent()).isPressed()) {\r\n            return;\r\n        }\r\n        super.setPressed(pressed);\r\n    }\r\n}<\/pre>\n<p><strong>Clase VentasBaseAdapter:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">import android.content.Context;\r\nimport android.view.LayoutInflater;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.ArrayAdapter;\r\nimport android.widget.BaseAdapter;\r\nimport android.widget.Button;\r\nimport android.widget.Spinner;\r\nimport android.widget.TextView;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport com.profeluismitre.mitienda.R;\r\n\r\npublic class VentasBaseAdapter extends BaseAdapter {\r\n    Context contexto;\r\n    ArrayList&lt;Producto&gt; listaproducto;\r\n    LayoutInflater inflater;\r\n    accionBotonVentas listener;\r\n\r\n    public VentasBaseAdapter(Context contexto,  ArrayList&lt;Producto&gt; listaproducto, accionBotonVentas listener) {\r\n        this.contexto = contexto;\r\n        this.listaproducto = listaproducto;\r\n        this.listener=listener;\r\n    }\r\n\r\n    @Override\r\n    public int getCount() {\r\n        return listaproducto.size();\r\n    }\r\n\r\n    @Override\r\n    public Object getItem(int i) {\r\n        return listaproducto.get(i);\r\n    }\r\n\r\n    @Override\r\n    public long getItemId(int i) {\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public View getView(int posicion, View convertView, ViewGroup parent) {\r\n\r\n        TextView codigo;\r\n        TextView descripcion;\r\n        TextView precio;\r\n        final Spinner spinner;\r\n        Button btnAgregar;\r\n\r\n        inflater = (LayoutInflater) contexto.getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r\n\r\n        View itemView = inflater.inflate(R.layout.elementos_ventas_lista, parent, false);\r\n        codigo = (TextView) itemView.findViewById(R.id.txtCodVent);\r\n        descripcion = (TextView) itemView.findViewById(R.id.txtDescVent);\r\n        precio = (TextView) itemView.findViewById(R.id.txtPrecVent);\r\n        spinner = (Spinner) itemView.findViewById(R.id.spinListVent);\r\n        btnAgregar=(Button)itemView.findViewById(R.id.btnAgregarVentas);\r\n        List&lt;String&gt; numeros = new ArrayList&lt;String&gt;();\r\n        final Producto prod=listaproducto.get(posicion);\r\n        for (int x = 1; x &lt;= prod.getCantidad(); x++) {\r\n            numeros.add(String.valueOf(x));\r\n        }\r\n\r\n        codigo.setText(\"Codigo: \"+prod.getCodigo());\r\n        descripcion.setText(prod.getDescripcion());\r\n        precio.setText(\"$ \" +prod.getPrecio());\r\n        spinner.setAdapter(new ArrayAdapter&lt;String&gt;(contexto, android.R.layout.simple_spinner_item, numeros));\r\n\r\n        btnAgregar.setTag(posicion);\r\n        btnAgregar.setOnClickListener(new View.OnClickListener() {\r\n            @Override\r\n            public void onClick(View view) {\r\n                int cantidad=spinner.getSelectedItemPosition()+1;\r\n                listener.calcularTotal(cantidad,\r\n                        Double.parseDouble(prod.getPrecio()));\r\n            }\r\n        });\r\n        return itemView;\r\n    }\r\n\r\n}<\/pre>\n<p>Nota: En los import de la clase deberas cambiar el nombre del paquete del Import com.profeluismitre.mitienda.R\u00a0 por el nombre del paquete de tu proyecto y lo terminas con la R mayuscula.<\/p>\n<p>Clase (Interface) accionBotonVentas:<\/p>\n<p>a diferencia de las demas clases al poner el nombre de la clase le cambiaremos a interface:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-328 aligncenter\" src=\"http:\/\/www.profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita24-300x242.png\" alt=\"\" width=\"300\" height=\"242\" srcset=\"https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita24-300x242.png 300w, https:\/\/profeluismitre.com.mx\/Ejemplos\/wp-content\/uploads\/2018\/04\/miTiendita24.png 547w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>y el c\u00f3digo quedar\u00eda de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true \">public interface accionBotonVentas {\r\n    void calcularTotal(int cantidad, double precio);\r\n}<\/pre>\n<h3><span style=\"color: #ff0000;\">Paso 13.<\/span><\/h3>\n<p><span style=\"color: #000000;\">Ahora ya creamos las clases necesarios, entonces iniciamos con las acciones de los fragmentos empezando por el mas F\u00e1cil al Mas Dif\u00edcil:<\/span><\/p>\n<h3><strong>Fragmento Inventario<\/strong><\/h3>\n<pre class=\"lang:default decode:true\">public class InventarioFragment extends Fragment {\r\n    \/\/creamos los objetos necesarios para esta clase\r\n    \/\/lista es el objeto que nos mostrara los porductos existentes\r\n    ListView lista;\r\n    \/\/el adaptador es el encargado de generar las ventanas que iran dentro de la lista\r\n    ListaAdapter adaptador;\r\n\r\n\r\n    @Override\r\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\r\n                             Bundle savedInstanceState) {\r\n        \/\/ Inflate the layout for this fragment\r\n        return inflater.inflate(R.layout.fragment_inventario, container, false);\r\n    }\r\n    public void onStart(){\r\n        super.onStart();\r\n        \/\/inicializamos los objetos\r\n        lista=(ListView)getView().findViewById(R.id.listaInventario);\r\n        adaptador=new ListaAdapter(getContext());\r\n        \/\/mandamos llamar el metodo que generara la lista\r\n        buscar();\r\n        adaptador.notifyDataSetChanged();\r\n        \/\/agregamos los elementos generamos a la lista\r\n        lista.setAdapter(adaptador);\r\n    }\r\n    \/\/metodo que arma el listado de productos\r\n    public void buscar(){\r\n        for (int x = 0; x&lt; MiBaseDatos.productos.size(); x++){\r\n            Producto prod=MiBaseDatos.productos.get(x);\r\n            adaptador.add(prod);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<h3>Fragmento Consultar:<\/h3>\n<pre class=\"lang:default decode:true \">import android.app.ProgressDialog;\r\nimport android.os.AsyncTask;\r\nimport android.os.Bundle;\r\nimport android.support.v4.app.Fragment;\r\nimport android.view.LayoutInflater;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.Button;\r\nimport android.widget.EditText;\r\nimport android.widget.ListView;\r\nimport librerias.ListaAdapter;\r\nimport librerias.MiBaseDatos;\r\nimport librerias.Producto;\r\n\r\npublic class ConsultarFragment extends Fragment implements View.OnClickListener {\r\n    \/\/ creamos los objetos necesarios\r\n    ListView lista;\r\n    Button btnBuscar;\r\n    EditText txtDescripcion;\r\n    ListaAdapter adaptador;\r\n    \r\n    @Override\r\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\r\n                             Bundle savedInstanceState) {\r\n        \/\/ Inflate the layout for this fragment\r\n        return inflater.inflate(R.layout.fragment_consultar, container, false);\r\n    }\r\n    \r\n    public void onStart(){\r\n        super.onStart();\r\n        \/\/inicializamos los objetos\r\n        lista=(ListView)getView().findViewById(R.id.listaConsultas);\r\n        btnBuscar=(Button)getView().findViewById(R.id.btnBusCons);\r\n        txtDescripcion=(EditText)getView().findViewById(R.id.txtDescConsultar);\r\n        adaptador=new ListaAdapter(getContext());\r\n        \/\/le agregamos accion al btnBuscar\r\n        btnBuscar.setOnClickListener(this);\r\n        adaptador.notifyDataSetChanged();\r\n        \/\/agregamos los elementos a la lista\r\n        lista.setAdapter(adaptador);\r\n    }\r\n\r\n    @Override\r\n    public void onClick(View view) {\r\n        \/\/cuando se oprima el boton buscar se ejecuta la tarea asincrona\r\n        if(view.getId()==R.id.btnBusCons){\r\n            new TareaAsincrona().execute();\r\n\r\n        }\r\n    }\r\n    \/\/el metodo buscar sera el encargado de buscar todos los productos que coincidan\r\n    public void buscar(String descripcion){\r\n        int num=lista.getCount();\r\n        adaptador.clear();\r\n        for(int x = 0; x&lt; MiBaseDatos.productos.size(); x++){\r\n            Producto prod=MiBaseDatos.productos.get(x);\r\n            \/\/en metodo indexOf compara los caracteres de la busqueda\r\n            int res=prod.getDescripcion().indexOf(descripcion);\r\n            \/\/si la condicion se cumple se agrega al adaptador\r\n            if(res!=-1){\r\n                adaptador.add(prod);\r\n            }\r\n        }\r\n        adaptador.notifyDataSetChanged();\r\n        lista.setAdapter(adaptador);\r\n\r\n    }\r\n    \/\/ la tarea asincrona es la encargada de mostrar nuestra barra de progreso la cual\r\n    \/\/ se muestra por 2 segundos y posteriormente se muestra el resultado obtenido\r\n    private class TareaAsincrona extends AsyncTask&lt;Void, Void, String&gt; {\r\n        \/\/el objeto nDialog es nuestra barra de progreso\r\n        private ProgressDialog nDialog;       \r\n        public TareaAsincrona() {\r\n            nDialog = new ProgressDialog(getActivity());\r\n        }\r\n        @Override\r\n        protected String doInBackground(Void... voids) {\r\n            try {\r\n                Thread.sleep(2000);\r\n            } catch (InterruptedException e) {\r\n                e.printStackTrace();\r\n            }\r\n            return null;\r\n        }\r\n\r\n        protected void onPreExecute() {\r\n            nDialog.show();\r\n            nDialog.setContentView(R.layout.dialogo_buscando);\r\n        }\r\n\r\n        protected void onPostExecute(String result) {\r\n            super.onPostExecute(result);\r\n\r\n            if (nDialog.isShowing()) {\r\n                nDialog.dismiss();\r\n                buscar(txtDescripcion.getText().toString());\r\n\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<h3>Fragmento Registrar:<\/h3>\n<p>Primeramente para poder hacer funcionar el lector de c\u00f3digo de barras agregaremos el siguiente m\u00e9todo dentro de la clase PrincipalActivity.java:<\/p>\n<pre class=\"lang:default decode:true\">@Override\r\n    public void onActivityResult(int requestCode, int resultCode, Intent intent) {\r\n        \/\/ retrieve scan result\r\n        IntentResult scanningResult = IntentIntegrator.parseActivityResult(\r\n                requestCode, resultCode, intent);\r\n        if (scanningResult != null) {\r\n            \/\/ we have a result\r\n            String scanContent = scanningResult.getContents();\r\n            MiBaseDatos.codigo=scanContent;\r\n            MiBaseDatos.escaneo=true;\r\n\r\n        } else {\r\n            Toast.makeText(getApplicationContext(),\r\n                    \"No scan data received!\", Toast.LENGTH_SHORT).show();\r\n        }\r\n    }<\/pre>\n<p>una vez agregado lo anterior nuestro fragmento quedar\u00eda de la manera siguiente:<\/p>\n<pre class=\"lang:default decode:true \">import android.app.ProgressDialog;\r\nimport android.os.AsyncTask;\r\nimport android.os.Bundle;\r\nimport android.support.v4.app.Fragment;\r\nimport android.view.LayoutInflater;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.Button;\r\nimport android.widget.EditText;\r\nimport librerias.IntentIntegrator;\r\nimport librerias.MiBaseDatos;\r\nimport librerias.Producto;\r\n\r\n\r\npublic class RegistrarFragment extends Fragment implements View.OnClickListener {\r\n    \/\/creamos los objetos necesarios\r\n    Button btnScaner, btnGrabar, btnCancelar;\r\n    EditText txtCodigo;\r\n    EditText txtDescripcion;\r\n    EditText txtPrecio;\r\n    EditText txtCantidad;\r\n\r\n    @Override\r\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\r\n                             Bundle savedInstanceState) {\r\n        \/\/ Inflate the layout for this fragment\r\n        return inflater.inflate(R.layout.fragment_registrar, container, false);\r\n    }\r\n    public void onStart(){\r\n        super.onStart();\r\n        \/\/inicializamos los objetos\r\n        btnScaner=(Button) getView().findViewById(R.id.btnScanerRegistro);\r\n        btnGrabar=(Button) getView().findViewById(R.id.btnGrabarReg);\r\n        btnCancelar=(Button) getView().findViewById(R.id.btnCancelarReg);\r\n        txtCodigo=(EditText)getView().findViewById(R.id.txtCodigoRegistro);\r\n        txtDescripcion=(EditText)getView().findViewById(R.id.txtDesRegistro);\r\n        txtPrecio=(EditText)getView().findViewById(R.id.txtPresRegistro);\r\n        txtCantidad=(EditText)getView().findViewById(R.id.txtCantRegistro);\r\n        \/\/agregamos acciones a los botones\r\n        btnScaner.setOnClickListener(this);\r\n        btnGrabar.setOnClickListener(this);\r\n        btnCancelar.setOnClickListener(this);\r\n\r\n    }\r\n    \/\/este metodo es el encargado de almacenar los datos en los arreglos\r\n    public void grabar(){\r\n        String codigo=txtCodigo.getText().toString();\r\n        String descripcion=txtDescripcion.getText().toString();\r\n        String precio=txtPrecio.getText().toString();\r\n        int cantidad=Integer.parseInt(txtCantidad.getText().toString());\r\n        MiBaseDatos.productos.add(new Producto(codigo,descripcion,precio,cantidad));\r\n    }\r\n    \/\/este metodo es el encargado de limpiar las cajas de texto\r\n    public void cancelar(){\r\n        txtCodigo.setText(\"\");\r\n        txtCantidad.setText(\"\");\r\n        txtPrecio.setText(\"\");\r\n        txtDescripcion.setText(\"\");\r\n        txtCodigo.requestFocus();\r\n        MiBaseDatos.escaneo=false;\r\n    }\r\n\r\n    \/\/en este metodo establecemos las acciones que haran cada uno de los botones\r\n    @Override\r\n    public void onClick(View view) {\r\n        \/\/Se responde al evento click y si el boton oprimido es el Scaner\r\n        if(view.getId()==R.id.btnScanerRegistro){\r\n            \/\/Se instancia un objeto de la clase IntentIntegrator\r\n            IntentIntegrator scanIntegrator = new IntentIntegrator(getActivity());\r\n            \/\/Se procede con el proceso de scaneo\r\n            scanIntegrator.initiateScan();\r\n        \/\/accion del boton grabar\r\n        }else if(view.getId()==R.id.btnGrabarReg){\r\n            new TareaAsincrona().execute();\r\n            grabar();\r\n        \/\/accion del boton Cancelar\r\n        }else if(view.getId()==R.id.btnCancelarReg){\r\n            cancelar();\r\n        }\r\n    }\r\n    \/\/cuando se cierra el lector de codigo de barras activamos el metodo\r\n    \/\/onResume que es cuando vuelve en si el fragmento\r\n    \/\/en el cual verificamos si se escaneo\r\n    public void onResume(){\r\n        super.onResume();\r\n        if(MiBaseDatos.escaneo) {\r\n            txtCodigo.setText(MiBaseDatos.codigo);\r\n            MiBaseDatos.escaneo=false;\r\n        }\r\n    }\r\n\/\/ tarea que nos muestra el dialogo de grabando y posteriormente almacena.\r\n    private class TareaAsincrona extends AsyncTask&lt;Void, Void, String&gt; {\r\n        private ProgressDialog nDialog;\r\n        String boton;\r\n        public TareaAsincrona(){\r\n            nDialog = new ProgressDialog(getActivity()); \/\/Here I get an error: The constructor ProgressDialog(PFragment) is undefined\r\n            this.boton=boton;\r\n        }\r\n        @Override\r\n        protected String doInBackground(Void... voids) {\r\n            try {\r\n                Thread.sleep(3000);\r\n            } catch (InterruptedException e) {\r\n                e.printStackTrace();\r\n            }\r\n            return null;\r\n        }\r\n\r\n        protected void onPreExecute() {\r\n            nDialog.show();\r\n            nDialog.setContentView(R.layout.dialogo_grabando);\r\n\r\n\r\n        }\r\n\r\n        protected void onPostExecute(String result) {\r\n            super.onPostExecute(result);\r\n\r\n            if (nDialog.isShowing()) {\r\n                nDialog.dismiss();\r\n                cancelar();\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<h3>Fragmento Ventas:<\/h3>\n<p>el Fragmento quedaria de la siguiente manera:<\/p>\n<pre class=\"lang:default decode:true\">import android.app.ProgressDialog;\r\nimport android.os.AsyncTask;\r\nimport android.os.Bundle;\r\nimport android.support.v4.app.Fragment;\r\nimport android.view.LayoutInflater;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.Button;\r\nimport android.widget.EditText;\r\nimport android.widget.ListView;\r\nimport android.widget.Toast;\r\nimport java.util.ArrayList;\r\nimport librerias.IntentIntegrator;\r\nimport librerias.MiBaseDatos;\r\nimport librerias.Producto;\r\nimport librerias.VentasBaseAdapter;\r\nimport librerias.accionBotonVentas;\r\n\r\n\r\npublic class VentasFragment extends Fragment implements accionBotonVentas,\r\n        View.OnClickListener {\r\n    \/\/creamos los objetos necesarios para trabajar\r\n    ListView lista;\r\n    VentasBaseAdapter adaptadorBase;\r\n    Button btnScaner, btnCobrar;\r\n    EditText txtCodigo;\r\n    \/\/la variable total llevara la suma de los productos comprados\r\n    double total=0;\r\n\r\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,\r\n                             Bundle savedInstanceState) {\r\n        \/\/ Inflate the layout for this fragment\r\n        return inflater.inflate(R.layout.fragment_ventas, container, false);\r\n    }\r\n    public void onStart() {\r\n        super.onStart();\r\n        \/\/inicializamos los objetos\r\n        lista=(ListView)getView().findViewById(R.id.listaVentas);\r\n        btnScaner=(Button)getView().findViewById(R.id.btnScanerVentas);\r\n        btnCobrar=(Button)getView().findViewById(R.id.btnCobrarVentas);\r\n        txtCodigo=(EditText)getView().findViewById(R.id.txtCodigoVentas);\r\n        \/\/asignamos las acciones a los botones\r\n        btnScaner.setOnClickListener(this);\r\n        btnCobrar.setOnClickListener(this);\r\n\r\n    }\r\n    \/\/establecemos el comportamiento de los botones\r\n    @Override\r\n    public void onClick(View view) {\r\n        if(view.getId()==R.id.btnScanerVentas){\r\n            \/\/si el boton presionado es el de escaner\r\n            MiBaseDatos.escaneo=true;\r\n            \/\/Se instancia un objeto de la clase IntentIntegrator\r\n            IntentIntegrator scanIntegrator = new IntentIntegrator(getActivity());\r\n            \/\/Se procede con el proceso de scaneo\r\n            scanIntegrator.initiateScan();\r\n\r\n        }else if(view.getId()==R.id.btnCobrarVentas){\r\n            \/\/si el boton oprimido es cobre se muestra el total a pagar e inicializamos a cero\r\n            Toast.makeText(getContext(), \"El Total es:\"+String.valueOf(total), Toast.LENGTH_SHORT).show();\r\n            total=0;\r\n        }\r\n    }\r\n    \/\/cuando se escaneo y vuelve en si la plicacion verificamos si se obtubo un codigo\r\n    \/\/y si es correcto se manda a llamar la tarea asincrona indicando que se esta buscando\r\n    public void onResume(){\r\n        super.onResume();\r\n        if(MiBaseDatos.escaneo){\r\n            txtCodigo.setText(MiBaseDatos.codigo);\r\n            MiBaseDatos.escaneo=false;\r\n            new TareaAsincrona().execute();\r\n        }\r\n\r\n    }\r\n    \/\/este metodo es el encargado de verificar que el codigo escaneado exista y si existe nos muestra\r\n    \/\/la opcion para la venta\r\n    public void buscar(){\r\n        ArrayList&lt;Producto&gt; productos=new ArrayList();\r\n        for(int x=0;x&lt; MiBaseDatos.productos.size();x++){\r\n            Producto prod=MiBaseDatos.productos.get(x);\r\n            if(prod.getCodigo().equals(txtCodigo.getText().toString())) {\r\n                productos.add(prod);\r\n            }\r\n        }\r\n        \/\/una vez encontrado el producto se agrega al adaptador para asignarlo a la lista\r\n        adaptadorBase= new VentasBaseAdapter(getContext(),productos,this);\r\n        adaptadorBase.notifyDataSetChanged();\r\n        lista.setAdapter(adaptadorBase);\r\n        MiBaseDatos.codigo=\"\";\r\n    }\r\n    \/\/metodo que se ejecuta al oprimir el boton agregar del producto buscado\r\n    @Override\r\n    public void calcularTotal(int cantidad, double precio) {\r\n        double total=cantidad*precio;\r\n        Toast.makeText(getContext(), \"Agregando a Total:\"+String.valueOf(total), Toast.LENGTH_SHORT).show();\r\n        this.total=this.total+total;\r\n    }\r\n\r\n\/\/tarea asincrona que nos muestra el mensaje de buscar antes de mostrar el resultado..\r\n    private class TareaAsincrona extends AsyncTask&lt;Void, Void, String&gt; {\r\n        private ProgressDialog nDialog;\r\n\r\n        public TareaAsincrona(){\r\n            nDialog = new ProgressDialog(getActivity()); \/\/Here I get an error: The constructor ProgressDialog(PFragment) is undefined\r\n\r\n        }\r\n        @Override\r\n        protected String doInBackground(Void... voids) {\r\n            try {\r\n                Thread.sleep(2000);\r\n            } catch (InterruptedException e) {\r\n                e.printStackTrace();\r\n            }\r\n            return null;\r\n        }\r\n\r\n        protected void onPreExecute() {\r\n            nDialog.show();\r\n            nDialog.setContentView(R.layout.dialogo_buscando);\r\n\r\n\r\n        }\r\n\r\n        protected void onPostExecute(String result) {\r\n            super.onPostExecute(result);\r\n\r\n            if (nDialog.isShowing()) {\r\n                nDialog.dismiss();\r\n                \/\/una vez que pasa el tiempo se procede a buscar el producto\r\n                buscar();\r\n\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<h3>Fin.. con esto quedar\u00eda nuestra aplicaci\u00f3n terminada..<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Ejemplo Tiendita sin Base de Datos este ejemplo implementa el uso de la Llamada ventana Splash, lector de c\u00f3digo de barras y de almacenamiento en arreglos. @Autor: Prof. Luis Mitre Paso 1. Iniciamos creando un nuevo proyecto en android Studio el cual llamare MiTiendita: Al crear un nuevo proyecto aparecer\u00e1 la imagen anterior. nombre de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-296","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=296"}],"version-history":[{"count":13,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/296\/revisions"}],"predecessor-version":[{"id":348,"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=\/wp\/v2\/pages\/296\/revisions\/348"}],"wp:attachment":[{"href":"https:\/\/profeluismitre.com.mx\/Ejemplos\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}