|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Problema con los intent
Hola a todos. Estoy haciendo una aplicación para la facultad de una simulación y tengo un problema, a ver si me podeis echar una mano.
La simulación consta de 2 activities: La primera es una pantalla de ajustes donde podemos poner el valor de una constante (un double) que importo a la segunda activity. La segunda activity es una animación de la simulación donde trabajaré con esa variable importada, pero el problema es que es al importarla no puedo trabajar con ella. Aquí os dejo el .java de la segunda actiity: Código:
package import public class Potencial_1 extends Activity { //Hilo abierto Thread hilo=null; boolean continuar=true; boolean dialogo=false; //dt int dt=100; int tiempo; //-----------------Variables-------------------- //----------------------------------------------- DinamicaView dinamica; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //-------------------------IMPORTO EL BUNDLE------------- //------------------------------------------------------- dinamica=new DinamicaView(this); setContentView(dinamica); hilo=new Thread(dinamica); hilo.start(); } //Detenemos el hilo si hay pausa @Override public void onPause(){ super.onPause(); continuar=false; } //Reiniciamos el hilo si volvemos a la aplicación @Override public void onResume(){ super.onResume(); continuar=true; if(hilo==null){ hilo=new Thread(dinamica); hilo.start(); } } //Clase para pintar class DinamicaView extends View implements Runnable{ Paint Paint0, Paint1,Paint2, Paint3, paintFondo, texto, PaintOnda, PaintPozo; Path Onda,Pozo; int m, n, m0, n0, size; public DinamicaView(Context context){ super (context); //--------------------------CONDICIONES INICIALES-------------------- //QUIERO IMPORTAR MI VARIABLE AQUÍ???? //------------------------------------------------------------------- //PINCELES paintFondo=new Paint(); ..... } //--------------------------------Algoritmo--------------------------------------------------------------------------------// public void run(){ while(continuar){ //OPERACIONES PARA CREAR LA ANIMACIÓN tiempo=tiempo+dt; //REFRECAMOS postInvalidate(); try{ Thread.sleep(dt); }catch (InterruptedException e){ ; } } } //--------------------------------------------------------------------------------------------------------------------------------------------------------// //----------------------------------------------------------DIBUJAR EN PANTALLA---------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------------------------------------------------------------------// @Override public void onDraw(Canvas canvas){ canvas.drawPaint(paintFondo); } } } } He estado buscando y no se que hacer, siempre me lio con los intent. A ver si me podeis echar una mano con este pequeño problemilla. MUCHAS GRACIAS. Código fuente: https://docs.google.com/folder/d/0B_...JqQ0lUVW8/edit Menu.java: actividad 1 Potencial_1.java: actividad 2 Última edición por LuiTrO Día 20/01/13 a las 14:56:09. |
|
#2
|
||||
|
||||
Si no pones como importas el Double del Bundle dificilmente te podemos ayudar, ya que lo único que has puesto es un triste comentario.
Si la variable Double donde cargas el valor procedente de la activity anterior es global en la Activity puedes usarlo perfectamente en el View. O también puedes añadir un método setConstante(Double constante) a DinamicaView y justo después de crearla asignarle la constante mediante el método. |
#3
|
||||
|
||||
En la primera actividad exporto el intent, al pulsar un boton. La variable Amplitud toma un valor antes :
Código:
@Override public void onClick(View v) { if(v.getId()==R.id.button1){ Intent intent1 = new Intent(this, Potencial_1.class); intent1.putExtra("NOMBRE", Amplitud); intent1.putExtras(intent1); startActivity(intent1); } Código:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent1 = getIntent(); Bundle myBundle = intent1.getExtras(); double dob1 = myBundle.getDouble("Amplitud"); dinamica=new DinamicaView(this); setContentView(dinamica); hilo=new Thread(dinamica); hilo.start(); } Última edición por LuiTrO Día 20/01/13 a las 22:21:59. |
#4
|
||||
|
||||
Prueba a usar Bundles.
No soy muy experto en esto, pero tengo dos cosas que decir al respecto: 1) Porque haces intent.putExtra y luego intent.putExtras del mismo Intent? No es algo sin sentido? Quizás se hace así eh, pero yo siempre lo he hecho de otra forma. 2) Alguna vez intenté pasar los "Extras" directamente al Intent y tampoco me funcionó, así que yo como siempre usé Bundles. Con eso me refiero a meter todos los datos en un Bundle y luego hacer: intent.putExtras(bundle); No sé si me explico. Prueba a hacerlo, a ver si así te funciona.. fue mi solución una vez. |
![]() |
![]() |
||||||
|