android - startactivity - Cómo iniciar una nueva actividad con el clic del botón
start activity from fragment (21)
Kotlin
Primera actividad
startActivity(Intent(this, SecondActivity::class.java) .putExtra("key", "value"))
Segunda actividad
val value = getIntent().getStringExtra("key")
Aquí está la sugerencia pro
Siempre ponga las claves en el 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"))
En una aplicación de Android, ¿cómo inicia una nueva actividad (GUI) cuando se hace clic en un botón en otra actividad y cómo pasa datos entre estas dos actividades?
Aunque ya se han proporcionado las respuestas correctas, pero estoy aquí para buscar la respuesta en el idioma Kotlin. Esta pregunta no es sobre el lenguaje específico, por lo que estoy agregando el código para realizar esta tarea en el idioma Kotlin.
Así es como haces esto en Kotlin para andorid
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
Coloque el widget del botón en xml como abajo
<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 detector de clics en la Actividad como abajo.
En el método Activity On Create:
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);
}
});
Comience otra actividad de esta actividad y u también puede pasar parámetros a través de Bundle Object.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "[email protected]");
startActivity(intent);
Recuperar datos en otra actividad (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Cree un intento para una actividad de ViewPerson y pase el ID de persona (para una búsqueda de 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, asegurarse de que no sea nulo (en caso de que si a veces no pasa los datos), 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();
}
Entonces llámalo en cualquier actividad por:
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
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);
}
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 simplemente agregue el siguiente código al archivo AndroidManifest.xml
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Emmanuel
Creo que la información adicional se debe colocar antes de comenzar la actividad, de lo contrario, los datos no estarán disponibles aún 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);
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");
Fácil.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
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 olvides agregar tu nueva actividad en el AndroidManifest.xml:
<activity android:label="@string/app_name" android:name="NextActivity"/>
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;
}
Iniciar una actividad desde otra actividad es un escenario muy común entre las aplicaciones de Android.
Para iniciar una actividad necesitas un objeto [Intent][1]
.
¿Cómo crear objetos de intención?
Un objeto de intención toma dos parámetros en su constructor.
- Contexto
- Nombre de la actividad a iniciar.
Ejemplo:
Por ejemplo, si tiene dos actividades, diga DetailActivity
y DetailActivity
y desea iniciar DetailActivity
desde DetailActivity
(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 está hecho.
Volviendo al botón, haga clic en la parte.
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);
}
});
La manera de comenzar nuevas actividades es transmitir un intento, y hay un tipo específico de intento que puede utilizar para pasar datos de una actividad a otra. Mi recomendación es que revises los documentos del desarrollador de Android relacionados con intents ; Es una gran cantidad de información sobre el tema, y también tiene ejemplos.
Las respuestas actuales son excelentes, pero se necesita una respuesta más completa para los principiantes. Hay 3 formas diferentes de comenzar una nueva actividad en Android, y todas usan la clase Intent
; Intención | Desarrolladores de Android .
- Usando el atributo
onClick
del botón. (Principiante) - Asignar un
OnClickListener()
través de una clase anónima. (Intermedio) - Método de la interfaz de toda la actividad utilizando la instrucción
switch
. (Pro)
Aquí está el enlace a mi ejemplo si desea seguirlo: https://github.com/martinsing/ToNewActivityButtons
1. Usando el atributo onClick
del botón. (Principiante)
Los botones tienen un atributo onClick
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 la clase de 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 múltiples onClick
s con la misma intención.
Desventaja : Difícil legibilidad al revisar.
2. Asignar un OnClickListener()
través de una clase anónima. (Intermedio)
Esto es cuando establece un setOnClickListener()
separado para cada button
y anula cada onClick()
con su propia intención.
En la clase de Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
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);}
});
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.
3. Método de la interfaz amplia de actividad utilizando la instrucción switch
. (Pro)
Esto es cuando usa una instrucción de switch
para sus botones dentro del método onClick()
para administrar todos los botones de la actividad.
En la clase de Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
button1 = (Button) findViewById(R.id.button1);
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 : gestión de botones fácil porque todos los intentos de botones se registran en un solo método onClick()
Para la segunda parte de la pregunta, pasar datos, consulte ¿Cómo paso datos entre Actividades en la aplicación de Android?
Prueba este método simple.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Puedes probar este código:
Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);
Toma 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 listador 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
}
Intent i = new Intent(firstactivity.this, secondactivity.class);
startActivity(i);
Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);
startActivity(in);
This is an explicit intent to start secondscreen activity.
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);