objetos - pasar datos entre actividades android studio
Iniciar una actividad con un parĂ¡metro. (5)
Las respuestas existentes (pasar los datos en la Intent
pasada a startActivity()
) muestran la forma normal de resolver este problema. Hay otra solución que se puede usar en el caso impar donde está creando una Actividad que será iniciada por otra aplicación (por ejemplo, una de las actividades de edición en un complemento de Tasker ) y, por lo tanto, no controla la Intent
que inicia el Activity
Puede crear una Activity
clase base que tiene un constructor con un parámetro, luego una clase derivada que tiene un constructor predeterminado que llama al constructor de clase base con un valor, como tal:
class BaseActivity extends Activity
{
public BaseActivity(String param)
{
// Do something with param
}
}
class DerivedActivity extends BaseActivity
{
public DerivedActivity()
{
super("parameter");
}
}
Si necesita generar el parámetro para pasar al constructor de la clase base, simplemente reemplace el valor codificado por una llamada de función que devuelva el valor correcto para pasar.
Soy muy nuevo en el desarrollo de Android.
Quiero crear y comenzar una actividad para mostrar información sobre un juego. Muestro que información necesito un gameId.
¿Cómo puedo pasar esta identificación del juego a la actividad? La ID del juego es absolutamente necesaria, así que no quiero crear o iniciar la actividad si no tiene la ID.
Es como si la actividad tuviera un solo constructor con un parámetro.
¿Cómo puedo hacer eso?
Gracias.
Me gusta hacerlo con un método estático en la segunda actividad:
private static final String EXTRA_GAME_ID = "your.package.gameId";
public static void start(Context context, String gameId) {
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra(EXTRA_GAME_ID, gameId);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Intent intent = this.getIntent();
String gameId = intent.getStringExtra(EXTRA_GAME_ID);
}
Luego, desde su primera actividad (y para cualquier otro lugar), simplemente haga:
SecondActivity.start(this, "the.game.id");
Simplemente agregue datos adicionales al Intento que usa para llamar a su actividad.
En la actividad de la persona que llama:
Intent i = new Intent(this, TheNextActivity.class);
i.putExtra("id", id);
startActivity(i);
Dentro de onCreate () de la actividad a la que llama:
Bundle b = getIntent().getExtras();
int id = b.getInt("id");
Edit: Ups, Charlie Sheen fue más rápido.
Código Kotlin:
Inicia la SecondActivity
:
startActivity(Intent(context, SecondActivity::class.java)
.putExtra(SecondActivity.PARAM_GAME_ID, gameId))
Obtener el ID en SecondActivity
:
class CaptureActivity : AppCompatActivity() {
companion object {
const val PARAM_GAME_ID = "PARAM_GAME_ID"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val gameId = intent.getStringExtra(PARAM_GAME_ID)
// TODO use gameId
}
}
donde gameId
es String?
(puede ser nulo)
Pon un int
que sea tu id en el nuevo Intent
.
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putInt("key", 1); //Your id
intent.putExtras(b); //Put your id to your next Intent
startActivity(intent);
finish();
Entonces toma la identificación en tu nueva Activity
:
Bundle b = getIntent().getExtras();
int value = -1; // or other values
if(b != null)
value = b.getInt("key");