Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
pasar parmetros
Hemos visto en el concepto anterior que un programa puede tener ms de una
ventana representando cada ventana con una clase que hereda de
ActionBarActivity.
Una situacin muy comn es que la primer ventana necesite enviar datos a la
segunda para que a partir de estos proceda a efectuar una accin.
Problema:
Confeccionar un programa que solicite el ingrese de una direccin de un sitio web
y seguidamente abrir una segunda ventana que muestre dicha pgina.
Para resolver este problema utilizaremos el control visual WebView que nos
permite mostrar el contenido de un sitio web.
Crearemos un nuevo proyecto llamado proyecto012.
packagear.com.tutorialesya.proyecto12;
importandroid.content.Intent;
importandroid.support.v7.app.ActionBarActivity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.widget.EditText;
publicclassMainActivityextends
ActionBarActivity{
privateEditTextet1;
@Override
protectedvoidonCreate(Bundle
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.editText);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu)
{
//Inflatethemenu;thisaddsitemsto
theactionbarifitispresent.
getMenuInflater().inflate(R.menu.menu_main,menu);
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItem
item){
//Handleactionbaritemclickshere.The
actionbarwill
//automaticallyhandleclicksonthe
Home/Upbutton,solong
//asyouspecifyaparentactivityin
AndroidManifest.xml.
intid=item.getItemId();
//noinspectionSimplifiableIfStatement
if(id==R.id.action_settings){
returntrue;
}
returnsuper.onOptionsItemSelected(item);
}
publicvoidver(Viewv){
Intenti=new
Intent(this,Actividad2.class);
i.putExtra("direccion",
et1.getText().toString());
startActivity(i);
}
}
Como podemos ver la diferencia con el concepto anterior es que llamamos al
mtodo putExtra de la clase Intent. Tiene dos parmetros de tipo String, en el
primero indicamos el nombre del dato y en el segundo el valor del dato:
public void ver(View v) {
Intent i=new Intent(this,Actividad2.class);
i.putExtra("direccion", et1.getText().toString());
startActivity(i);
}
packagear.com.tutorialesya.proyecto12;
importandroid.support.v7.app.ActionBarActivity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.webkit.WebView;
publicclassActividad2extendsActionBarActivity
{
privateWebViewwebView1;
@Override
protectedvoidonCreate(Bundle
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_actividad2);
webView1=(WebView)
findViewById(R.id.webView);
Bundlebundle=getIntent().getExtras();
Stringdato=bundle.getString("direccion");
webView1.loadUrl("http://"+dato);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu)
{
//Inflatethemenu;thisaddsitemsto
theactionbarifitispresent.
getMenuInflater().inflate(R.menu.menu_actividad2,
menu);
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItem
item){
//Handleactionbaritemclickshere.The
actionbarwill
//automaticallyhandleclicksonthe
Home/Upbutton,solong
//asyouspecifyaparentactivityin
AndroidManifest.xml.
intid=item.getItemId();
//noinspectionSimplifiableIfStatement
if(id==R.id.action_settings){
returntrue;
}
returnsuper.onOptionsItemSelected(item);
}
publicvoidfinalizar(Viewv){
finish();
}
}
En esta clase definimos una variable de tipo Bundle y la inicializamos llamando al
mtodo getExtras() de la clase Intent (esto lo hacemos para recuperar el o los
parmetros que envi la otra actividad (Activity)):
Bundle bundle = getIntent().getExtras();
String dato=bundle.getString("direccion");
webView1.loadUrl("http://" + dato);
Importante
Como nuestra aplicacin debe acceder a internet debemos hacer una
configuracin en el archivo "AndroidManifest.xml", podemos ubicar este archivo: