PDA

Ver la Versión Completa : [ CONSULTA ] Problema con los intent


LuiTrO
20/01/13, 10:22:25
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:

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);


}
}

}

}Como veis, importo el Bundle (double) dentro del onCreate, pero luego no puedo trabajar con esa variable dentro de "public DinamicaView(Context context){".

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_RLL3CNSUA_QS1IVjJqQ0lUVW8/edit

Menu.java: actividad 1
Potencial_1.java: actividad 2

kriogeN
20/01/13, 12:13:16
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.

LuiTrO
20/01/13, 14:45:19
En la primera actividad exporto el intent, al pulsar un boton. La variable Amplitud toma un valor antes :


@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);
}

Mientras en la segunda actividad importo el intent en public void onCreate{


@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();

}

Ahora subo las dos actividades por si quereis echarle un vistazo.

superroko2
21/01/13, 20:11:20
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.