studio pasar objetos entre desde datos boton activity actividades abrir android android-activity oncreate

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