Respuestas:
Fácil.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Los extras se recuperan en el otro lado a través de:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
No olvide agregar su nueva actividad en AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
y startActivity(myIntent)
?
Cree una intención para una actividad ViewPerson y pase el PersonID (para una búsqueda en la base de datos, por ejemplo).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
Luego, en ViewPerson Activity, puede obtener el paquete de datos adicionales, asegúrese de que no sea nulo (en caso de que a veces no pase datos), luego obtenga los datos.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Ahora, si necesita compartir datos entre dos actividades, también puede tener un Singleton global.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Luego llámalo en cualquier actividad:
YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here. Could be setter/getter or some other type of logic
Las respuestas actuales son excelentes, pero se necesita una respuesta más integral para los principiantes. Hay 3 formas diferentes de comenzar una nueva actividad en Android, y todas usan la Intent
clase; Intención | Desarrolladores de Android .
onClick
atributo del Botón. (Principiante)OnClickListener()
vía a través de una clase anónima. (Intermedio)switch
declaración. (Pro)Aquí está el enlace a mi ejemplo si quieres seguirlo:
onClick
atributo del Botón. (Principiante)Los botones tienen un onClick
atributo que se encuentra dentro del archivo .xml:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnActivity"
android:text="to an activity" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnotherActivity"
android:text="to another activity" />
En clase Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
public void goToAnActivity(View view) {
Intent intent = new Intent(this, AnActivity.class);
startActivity(intent);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, AnotherActivity.class);
startActivity(intent);
}
Ventaja : Fácil de hacer sobre la marcha, modular, y puede configurar fácilmente varios correos onClick
electrónicos con la misma intención.
Desventaja : difícil legibilidad al revisar.
OnClickListener()
vía a través de una clase anónima. (Intermedio)Esto es cuando establece un separado setOnClickListener()
para cada uno button
y anula cadaonClick()
con su propia intención.
En clase Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnActivity.class);
view.getContext().startActivity(intent);}
});
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnotherActivity.class);
view.getContext().startActivity(intent);}
});
Ventaja : fácil de hacer sobre la marcha.
Desventaja : Habrá muchas clases anónimas que dificultarán la legibilidad al revisar.
switch
declaración. (Pro)Esto es cuando usa una switch
declaración para sus botones dentro delonClick()
método para administrar todos los botones de la Actividad.
En clase Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
Intent intent1 = new Intent(this, AnActivity.class);
startActivity(intent1);
break;
case R.id.button2:
Intent intent2 = new Intent(this, AnotherActivity.class);
startActivity(intent2);
break;
default:
break;
}
Ventaja : administración fácil de botones porque todos los intentos de botón se registran en un solo onClick()
método
Para la segunda parte de la pregunta, pasar datos, consulte ¿Cómo paso datos entre actividades en la aplicación de Android?
Cuando el usuario hace clic en el botón, directamente dentro del XML así:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
Usando el atributo android:onClick
declaramos el nombre del método que debe estar presente en la actividad principal. Así que tengo que crear este método dentro de nuestra actividad así:
public void buttonClickFunction(View v)
{
Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
startActivity(intent);
}
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);
Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);
startActivity(in);
This is an explicit intent to start secondscreen activity.
Emmanuel
Creo que la información adicional debe colocarse antes de comenzar la actividad; de lo contrario, los datos aún no estarán disponibles si está accediendo a ella en el método onCreate de NextActivity.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Desde la actividad de envío, intente el siguiente código
//EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'
public static final String EXTRA_MESSAGE = "packageName.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
....
//Here we declare our send button
Button sendButton = (Button) findViewById(R.id.send_button);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//declare our intent object which takes two parameters, the context and the new activity name
// the name of the receiving activity is declared in the Intent Constructor
Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);
String sendMessage = "hello world"
//put the text inside the intent and send it to another Activity
intent.putExtra(EXTRA_MESSAGE, sendMessage);
//start the activity
startActivity(intent);
}
Desde la actividad receptora intente el siguiente código:
protected void onCreate(Bundle savedInstanceState) {
//use the getIntent()method to receive the data from another activity
Intent intent = getIntent();
//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);
Luego solo agregue el siguiente código al archivo AndroidManifest.xml
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Prueba este método simple.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
La manera de comenzar nuevas actividades es difundir una intención, y hay un tipo específico de intención que puede usar para pasar datos de una actividad a otra. Mi recomendación es que revises los documentos de desarrollador de Android relacionados con las intenciones ; Es una gran cantidad de información sobre el tema, y también tiene ejemplos.
Primera actividad
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
Segunda actividad
val value = getIntent().getStringExtra("key")
Sugerencia
Siempre coloque las claves en un archivo constante para una forma más administrada.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
Iniciar una actividad desde otra actividad es un escenario muy común entre las aplicaciones de Android.
Para comenzar una actividad, necesita un objeto Intent .
Un objeto de intención toma dos parámetros en su constructor
Ejemplo:
Entonces, por ejemplo, si tiene dos actividades, diga HomeActivity
y DetailActivity
y quiera comenzar DetailActivity
desde HomeActivity
(HomeActivity -> DetailActivity).
Aquí está el fragmento de código que muestra cómo iniciar DetailActivity desde
InicioActividad.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
Y ya terminaste.
Volviendo a la parte de clic del botón.
Button button = (Button) findViewById(R.id.someid);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
}
});
Inicie otra actividad desde esta actividad y también puede pasar parámetros a través del Objeto de paquete.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Recuperar datos en otra actividad (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Implemente la interfaz View.OnClickListener y anule el método onClick.
ImageView btnSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search1);
ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
btnSearch.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSearch: {
Intent intent = new Intent(Search.this,SearchFeedActivity.class);
startActivity(intent);
break;
}
Aunque ya se han proporcionado las respuestas adecuadas, estoy aquí para buscar la respuesta en el idioma Kotlin. Esta pregunta no se refiere al idioma específico, por lo que agrego el código para realizar esta tarea en el idioma Kotlin.
Así es como se hace esto en Kotlin para andorid
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
La forma más sencilla de abrir actividad al hacer clic en el botón es:
onclick
función. MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
SecondActivity.java
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}
}
AndroidManifest.xml (solo agregue este bloque de código al existente)
</activity>
<activity android:name=".SecondActivity">
</activity>
Tome el botón en xml primero.
<Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"
android:text="Your Text"
/>
Hacer lista de botón.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
Cuando se hace clic en el botón:
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(getApplicationContext(), NextActivity.class);
intent.putExtra("data", value); //pass data
startActivity(intent);
}
});
Para recibir los datos adicionales de NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
Escribe el código en tu primera actividad.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
//You can use String ,arraylist ,integer ,float and all data type.
intent.putExtra("Key","value");
startActivity(intent);
finish();
}
});
En secondActivity.class
String name = getIntent().getStringExtra("Key");
Coloque el widget de botón en xml como a continuación
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Después de eso, inicialice y maneje el oyente de clics en la Actividad como a continuación.
En Actividad en Crear método:
Button button =(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new
Intent(CurrentActivity.this,DesiredActivity.class);
startActivity(intent);
}
});