![]() |
|
Sony Xperia Play Para hablar del Xperia con controles tipo PSP. También conocido como PSP Phone |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
![]()
Bueno, hace unos dias empece a leer tutoriales de java para android, etcetc..... Y ya tengo mi primer problema que seguramente sea un fallo tonto, pero aun asi necesito ayuda....
Resulta que estoy utilizando la aplicación AIDE (market) para desarrollar, compilar y crear los apk..... Hasta aqui bien, pero he tratado de hacer un bucle (finito), en el que ponga helloworld 15 veces, pero solo lo muestra una vez.... Aqui mi codigo.. package com.mycompany.myapp; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; public class MainActivity extends Activity { /** Called when the activity is first created. * @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView HW = new TextView (this) ; HW.setText("HELLOWORLD"); int i = 1; for (i = 0; i < 10; i++) { setContentView(HW); } } } Alguien ve el fallo??? Añado una imagen... Última edición por bamsbamx Día 23/03/12 a las 11:48:34 |
|
#2
|
Por que seteas dos veces i?
Edit... Creo que ya he visto tu fallo, voy de cabeza y no lo puedo probar pero lo que estás haciendo es lo siguiente: Has creado un objeto del tipo TextView y lo rellenas 10 veces... en realidad tu bucle, si que se recorre las veces que quieres, el problema es que en todas ellas haces exactamente lo mismo... haz una prueba... cambia el contenido de tu for por esto setContentView(i); Si te sale un 0 es que solo se recorre una vez, si te sale un 9 se recorre 10 y ya tienes la pista de que el for no es el culpable. Siento no poder ayudarte mucho más pero es que no puedo probar tu codigo y no he trabajado con android. Un saludo. Última edición por Tit0lin Día 23/03/12 a las 13:04:08 |
Gracias de parte de: | ||
#3
|
||||
|
||||
Muchas gracias, pero si hago lo que me has dicho, al abrir el apk instalado me da force close.... Ni idea de porque... lo he intentado tambien con while y sale lo mismo.....
Alguna solucion????? PD: Por que dices lo de setear dos veces???? AÑADO: tambien he intentado tambien con System.out.println("HelloWorld"); pero no sale nada Última edición por bamsbamx Día 23/03/12 a las 16:02:53 |
#4
|
El system.Out.... Es para imprimir por consola, no para mandarle nada a la pantalla.
Si te da error, yo que tu probaría a ver que hace cada línea, yo me hago una idea, pero como no se como funcionan las clases de la SDK de android no te puedo ayudar mucho... Una de las cosas que tienes que tener clara es esta: Que quieres hacer? Rellenar un textview 10 veces ósea "hola mundo hola mundo hola mundo..." o crear 10 objetos textview y darles el valor de "hola mundo" a cada uno? Date cuenta que sólo creas un objeto textview. Lo de testear dos veces me refiero a que en una línea haces int I = 1; y dentro del bucle inicializas I a 0 Espero ayudarte ![]() Enviado desde mi Sony Ericsson Xperia Play |
Gracias de parte de: | ||
#5
|
Prueba quitando esta linea HW.setText("HELLOWORLD \n"); y luego colocarla dentro de tu ciclo y te propongo quitar int i =1 y poner dentro del ciclo int i = 0, como dice el compañero de arriba le das valor dos veces a la variable i
p.d la \n no se si hace lo mismo en android pero es un salto de linea, como lo hace java Última edición por Vicktoroid Día 23/03/12 a las 22:37:16 |
Gracias de parte de: | ||
#6
|
Pero el setText no se debe usar tal cual, no hay que olvidar que lo que quiere hacer es añadir texto una y otra vez, no machacar texto... Después de probar lo que propones añadiría el poner lo siguiente
HW.setText(HW.getText + "HELLOWORLD") Enviado desde mi Sony Ericsson Xperia Play |
Gracias de parte de: | ||
#7
|
||||
|
||||
Vale, ya he optimizado el codigo, ha funcionado y ha quedado así:
package com.mycompany.myapp; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; public class MainActivity extends Activity { /** Called when the activity is first created. * @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView HW = new TextView (this) ; HW.setText("HELLOWORLD \n"); int i; for(i = 0; i < 11; i++) { setContentView(HW); HW.setText(HW.getText() + "HELLOWORLD \n"); } } } A ver si entiendo lo que he hecho . El programa imprime un hello world, y luego asigna al HW lo anteriormente escrito y lo vuelve a escribir, no??? |
#8
|
Lo que haces es esto.
Instancias un objeto de la clase TextView en una variable llamada HW al hacer esto, puedes usar los métodos de la clase textview como setText para meterle el texto "hola mundo" luego entras en un bucle de 10 itinerancias el cual pinta en la variable HW lo que haya en esta más "hola mundo" por esto consigues que por cada vuelta del bucle no se pierda lo que había antes escrito, esto lo consigues con el getText concatenado con el resto del texto. Espero haber sido claro, porque desde el móvil me es un poco difícil explicarme jajajajaja. Un saludo y enhorabuena por tu logro ![]() Enviado desde mi Sony Ericsson Xperia Play |
Gracias de parte de: | ||
#9
|
||||
|
||||
Muchas gracias por la respuesta...
![]() |
#10
|
Si puedo responderte, estaré encantado de hacerlo
![]() Enviado desde mi Sony Ericsson Xperia Play |
Gracias de parte de: | ||
#11
|
||||
|
||||
ya estamos.... otra duda.... jejejejej
si en vez de poner el texto "hello world", quiero poner el valor de la variable "i"?????? lo he intentado pero parece que el HW.setText no es compatible con (HW.getText()+ i) o algo asi.... |
#12
|
Claro, el metodo setText solo te permitirá meter texto del tipo string es logico, asi que lo que has de hacer es esto:
(HW.getText()+ i.toString()) Lo que te está pasando es que setText te pide un parametro del tipo String y tu variable i es del tipo int. Comprueba que funciona y me cuentas ;). Un saludo. |
Gracias de parte de: | ||
#13
|
||||
|
||||
Muchas graciaaas ;) pero una última pregunta, a ver si puedo no hacer tantas preguntas jejejej
Eso del .toString se llama metodo, no??? Sabes si existe alguna lista con los método de java y su descripción??? Asi, con ctrl- f puedo resolver muchas de mis dudas.... Como sabias que existia ese método??? Gracias por la atención, otra vez ![]() |
#14
|
Pues se que existe ese metodo porque lo uso a diario, y claro que existe una lista... te metes en la documentación de la clase que estás usando por ejemplo... si quieres saber que puedes hacer con un objeto del tipo int buscas la documentación de la clase Integer que es de la que hereda int y ahí tienes todo lo que tienes que saber.
Aquí tienes la de Integer ;) http://docs.oracle.com/javase/1.4.2/...g/Integer.html Un saludo ;) |
Gracias de parte de: | ||
#15
|
||||
|
||||
Graaaaaaaax!!!!!
|
#16
|
De nada colega
Enviado desde mi Sony Ericsson Xperia Play |
Gracias de parte de: | ||
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 20:27:20 (GMT +2)
HTCMania: líderes desde el 2007