Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas

miércoles, 14 de mayo de 2014

Acceder a recursos de un Fragment desde un Activity mediante findById - Android

Hoy os dejo algo que me ha llevado un buen rato.
Todos los que aprendimos o hicimos nuestros pinitos hace ya algun tiempo con Android aprendimos que para "linkar" un elemento de una activity a nuestro archivo java, para poder trabajar con el, ya sea un botón, un Text View o cualquier otra cosa accediamos con un codigo similar a este.
salida = (TextView)findViewById(R.id.textView1);
Esto mismo normalmente lo colocabamos en el onCreate de nuestro Activity, pero desde hace ya algun tiempo lo que se viene usando son los Fragment, un fragment viene siendo una parte de lo que se va a ver en el Activity, puede ser el 100% o una pequeña parte, asi un Activity, puede estar formado por 1 o mas Fragment, en resumidas cuentas eso es lo que es.

Pues bien el problema esta en que si desde nuestro Activity, intentamos llamar a un textView que esta en nuestro Fragment como en el ejemplo superior, nos dara un error de tiempo de ejecucion, y si lo bicheamos un poco, veremos que aunque R.id.textView1 tiene un valor hexadecimal, a nuestra variable Salida sigue con null, esto es debido a que desde nuestra Activity no podemos acceder a los elementos del Fragment, para ello deberemos ir a la clase PlaceHolderFragment que nos ha creado Eclipse, y llamarlo desde alli como en el codigo que os dejo a continuación

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        public PlaceholderFragment() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            entrada = (EditText)rootView.findViewById(R.id.numEntrada);
            salida = (TextView)rootView.findViewById(R.id.numSalida);
            return rootView;
        }
    }
Espero os sirva de ayuda

Tambien os dejo el ejemplo completo y funcionando
https://github.com/rogama/Android---vista-boton-fragment

asi era como se hacia sin los Fragment
https://github.com/rogama/Android/tree/master/MasVistas

miércoles, 12 de febrero de 2014

Yo aprendí programación con Basic #programadorIO

Nuestra primera colaboración con Desarrollo web, no te la pierdas

martes, 4 de febrero de 2014

IOS - Declaración e implementación de métodos

En nuestro ejemplo crearemos un nuevo proyecto con una SingleView para agilizar.

Una vez Creado, nos iremos a nuestro ViewController.h y copiaremos lo siguiente:
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2;

Con esta simple linea hemos declarado nuestro método; paso a explicarlo:
-(void)
Con esto decimos que es un método de objeto y que no devuelve nada, que solo ejecuta una serie de sentencias que mas adelante programaremos.
Si quisiéramos declarar un objeto de clase lo haríamos sustituyendo el - por un +

En resumen:
  • -método de objeto
  • +método de clase
(void) No devuelve nada, solo ejecuta, si le ponemos algún tipo devariable será lo que nos devuelva NSString, NSNumber …

Lo siguiente que nos encontramos es: nombreDelMetodoCon

Lo cual no es ni más ni menos que el nombre del método
Ahora nos encontramos con Parametro1:
Debe ser un texto descriptivo del parámetro que solicitamos

Y lo siguiente es: (NSString *)parametro1
Lo que nos encontramos entre () solo es el tipo de dato que vamos a pedir parametro1 es el nombre de la variable que vamos a utilizar dentro de nuestro método.

Casi acabando nos encontramos con andParametro2:(NSString *)parametro2;
En donde andParametro2: Debe ser un texto descriptivo del segundo parámetro(NSString *)parametro2; al igual que con parametro1 pedimos el tipo de dato y damos el nombre de la variable que vamos a utilizar dentro del método.

Ahora vamos a nuestro ViewController.m
Y allí copiaremos lo siguiente:
//Implementacion del metodo
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2{
    NSLog(@"%@", parametro1);
    NSLog(@"%@", parametro2);
}

que vemos es lo mismo que hemos declarado en el .h tan solo que entre llaves hemos sacado 2 NSLog, uno para cada parámetro

Dentro del - (void)viewDidLoad Copiaremos lo siguiente
[self nombreDelMetodoConParametro1:@"Texto de Ejemplo1" andParametro2:@"Texto de ejemplo para el segundo ejemplo"];


En donde hemos escrito entre paréntesis por ser un método su implementación y todo ello precedido por self que es el símil a this en otros lenguajes, y se utiliza para referirnos a todo lo que tenemos en nuestra propia clase, seguido de la descripción de los parámetros se los pasamos

Os dejo el código para descargar desde mi GiHub:https://github.com/rogama/IOS---Declaraci-n-e-implementaci-n-de-metodo.git

miércoles, 8 de enero de 2014

Constantes - IOS

para usar las constantes en IOS, crearemos una nueva clase en nuestro proyecto, llamada Constantes, lo cual con creara 2 nuevos archivos, constantes h, y constantes.m, ambos archivos los ordenaremos en un nuevo group llamado constantes (esto ultimo es opcional, solo se usa para mantener mas ordenado el código)

Las declaraciones de nuestras variables, en este caso constantes, se efectuaran en el *.h, en nuestro ejemplo en Constantes. h

es una buena practica usar: FOUNDATION_EXPORT para que nuestras constantes puedan usarse en otros lenguajes

FOUNDATION_EXPORT NSString * const kTexto;

después en el ,m les daremos el valor

NSString * const kTexto = @"Esto es un texto";

Deberemos importarlo en la clase que necesitemos usarlo con #import "Constantes.h" si el import lo hacemos en el .m de una clase estada disponible solo en el .m, si lo hacemos en el .h estada disponible en el .m y .h de la clase en concreto.

#import "Constantes.h"

Si necesitamos importarlo en todo el proyecto tenemos un archivo dentro de Supporting Files, llamado: nombre_de_nuestro_proyecto-Prefix.pch
en donde podremos hacer el import.
Para importar un framework escribiremos su nombre entre < > pero para hacerlo de una clase " "

Dejo el proyecto de ejemplo en:
github: Ejemplo de Constantes en IOS


martes, 7 de enero de 2014

Convertir a int - IOS

al igual que en otros lenguajes tenemos la funcion parseInt() para convertir un texto ,u otro tipo de dato a entero, en IOS, debemos usar:

intValue

un ejemplo de uso seria:

int entero = 0;
NSNumber *enteroClase = [[NSNumber alloc] initWithInt:21];
entero = [enteroClase intValue];

lunes, 6 de enero de 2014

Implicit conversion of 'int' to 'id' is disallowed with ARC - IOS

Este error suele darnos en un código de este tipo:

int entero = 21;
NSMutableDictionary *diccionario = [[NSMutableDictionary alloc] init];
[diccionario setObject:entero forKey:@"numero"];
Es debido a que no podemos meter un int (ni ningún dato de tipo escalar) en un Dictionary, para hacerlo deberemos usar un NSNumber, asi que cambiado:

int entero = 21;
por NSNumber *entero = [[NSNumber alloc] initWithInt:21];

Lo tenemos arreglado.

PD: lo mismo nos ocurrira en un array

miércoles, 1 de enero de 2014

Cambiar el tamaño de imagenes en VB.NET

Con estas sencillas lineas podemos cambiar el tamaño de una imagen y guardarla donde queramos

Dim imagen As New Bitmap(New Bitmap(rutaOriginal), 320, 288)
imagen.Save(rutaDestino, System.Drawing.Imaging.ImageFormat.Jpeg)

Donde sustituyendo rutaOriginal por la ruta del archivo de origen y rutaDestino por la ruta donde se guardara la nueva imagen, lograremos cambiar el tamaño en este ejemplo a 320x288 px recuerda, la primera unidad es el ancho y la segunda el alto.

Espero os sirva de ayuda ;)

martes, 31 de diciembre de 2013

Mostrar el número de linea en XCode

Para mostrar el número de linea en XCode es tan sencillo, como ir a XCOde, seleccionar Preferences.

Y en la ventana que se nos abre ir a Text Editing y allí marcar la casilla de Line numbers


lunes, 23 de diciembre de 2013

Los bucles While y do- while - IOS

Los bucles While y do- while son muy similares también a los del resto de lenguajes. Su sintaxis es:

    while (<#condition#>) {
        <#statements#>
    }
    
    do {
        <#statements#>

    } while (<#condition#>);

Un par de ejemplos son:
    BOOL condicion = YES;
    
    while (!condicion) {
        NSLog(@"Condicion falsa");
        condicion = YES;
    }
    
    do {
        condicion = NO;
        NSLog(@"Condicion verdadera");
    } while (condition);

Podeis descargarlos desde:

bucle for in - IOS

El bucle for in en IOS es muy similar al de otros lenguajes. Su sintaxis es:

    for (<#type *object#> in <#collection#>) {
        <#statements#>

    }

Aqui os dejo un ejemplo

    NSArray *array =[[NSArray alloc] initWithObjects: @"texto1", @"texto2",@"texto3",@"texto4", nil];
    
    for (NSString *cadena in array) {
        NSLog(@"%@", cadena);
    }


Podeis descargarlo desde:
IOS-bucle-for-in

Bucle for - IOS

El bucle for en IOS es muy similar al del resto de lenguajes. Su sintaxis es:

    for (<#initialization#>; <#condition#>; <#increment#>) {
        <#statements#>

    }

Aqui os dejo un ejemplo:

    for (int i = 0; i<5; i++) {
        NSLog(@"Entra: %i", i);
    }

Aqui os dejo un ejemplo:

conditional switch - IOS

El conditional switch también es muy similar al de otros lenguajes, su sintaxis es:

    switch (<#expression#>) {
        case <#constant#>:
            <#statements#>
            break;
            
        default:
            break;

    }

Aqui teneis un ejemplo:

    int caso = 3;
    
    switch (caso) {
        case 1:
            NSLog(@"Estoy en el caso 1");
            break;
        case 2:
            NSLog(@"Estoy en el caso 2");
            break;
        case 3:
            NSLog(@"Estoy en el caso 3");
            break;
        default:
            NSLog(@"Caso sin identificar");
            break;
    }

Os dejo un ejemplo en:

Condicional If - IOS

El conditional if es muy similar al de cualquier otro lenguaje. Su sintaxis es la siguiente:

if(condicion){
    codigo a ejecutar
}

podemos verlo en los siguientes ejemplos:
    BOOL correcto = NO;
    
    if (correcto) {
        NSLog(@"correcto");
    }else{
        NSLog(@"No es correcto");
    }
    
    int numero = 2;
    if (numero < 2) {
        NSLog(@"Numero menor que 2");
    }else if (numero>2){
        NSLog(@"Numero mayor que 2");
    }else{
        NSLog(@"Numero es igual a 2");
    }



Un ejemplo en:
IOS-condicional-if

martes, 15 de octubre de 2013

Curso programación desde 0 - Tema 8 - Programación Orientada a Objetos (POO)

Este tema tan solo sera teórico la programación orientada a objetos o sus siglas POO es un concepto el cual es importante de entender para casi cualquier lenguaje moderno. La programación orientada a objetos consiste en que, en nuestro entorno, todo es un objeto y como cual tiene unas propiedades, y unas cualidades, el típico que suele ponerse es el de un coche.

Un coche seria nuestro objeto, el cual tiene algunas propiedades como su numero de ruedas, color, peso, numero de plazas, lo cual puede variar de un coche a otro; pero también puede acelerar, ir hacia delante, hacia atrás, o girar.

A las propiedades de nuestro vehículo vamos a llamarlas precisamente propiedades o atributos, serán definidas en nuestra clase, y podremos ver o editar sus valores, dependiendo del objeto, y de la propiedad, en el ejemplo del coche, siempre va a tener 4 ruedas, con menos seria un triciclo o una moto, y con mas... seria algo extraño, por lo que si tenemos que definir la clase de nuestro coche siempre tendrá 4 ruedas, ese valor no tendría sentido que lo pudiéramos editar, seria solo visible, pero a la hora de declarar un nuevo objeto del tipo coche, si tendríamos que asignar un valor al numero de plazas, y al color, ya que cada modelo es distinto, lo normal seria asignar un valor por defecto, por ejemplo 5 plazas, que es lo más estándar pero podría tener 4, 7, 9 o quizás otro valor, esta propiedad seria fija, ya que nuestro coche no puede tener 4 plazas hoy y 9 mañana, pero se la pasaríamos nosotros al crearla, en cuanto al color, si tendría lógica que fuera editable, ya que podríamos pintarlo y cambiarle el color en cualquier momento.

Nuestro coche también tiene métodos como es el de acelerar, frenar, girar... esto no seria ni mas ni menos que las funciones que declaremos publicas de nuestro coche, es decir al apretar el pedal haz girar mas rápido el motor para ganar velocidad...

Otro concepto importante de la POO es la herencia, nuestro coche es un vehículo por lo que coche heredara todas las propiedades y métodos de la clase padre en este caso vehículo pero teniendo algunos que le caracterizan y son únicos de el, por ejemplo, cualquier vehículo puede acelerar, frenar y girar; pero no todos tienen 4 ruedas, creo que las motos tampoco tienen marcha atrás, por lo que seria un método especial para coches.

Casi todos los lenguajes también tienen otra propiedad, que es el polimorfismo esto quiere decir que la función acelerar, por poner un ejemplo puede ser declarada varias veces, pidiendo distintos parámetros

p.e: nombreFuncion(variable1);

      nombreFuncion(variable1,variable2,variable3);

      nombreFuncion(variable1, variable2);

Esto seria valido y a la hora de programar nos da mucha flexibilidad, ya que con el mismo nombre podemos llamar a varias funciones distintas, ejecutando siempre la que nos interese según el numero de parámetros PHP es el único lenguaje Orientado a Objetos que conozco que no admite polimorfismo.

Resto de temas:
Tema 8 - Programación Orientada a Objetos POO
Tema 7 - Funciones
Tema 6 - Bucles Repetitivos
Tema 5 - Usando condicionales
Tema 4 - Arrays
Tema 3 - Pensando con variables
Tema 2 - Pensando como Programadores
Tema 1 - ¿Que es la programacion?