studio - ¿Cómo obtener datos de otra actividad en Android?
onactivityresult android (5)
Sí, has escrito mal videodetails:
Atentamente: vid * OE * detalles
Correcto: vid * EO * detalles
Tengo dos actividades, como la Activity
A y B, y estoy tratando de pasar dos cadenas diferentes de A a B usando Bundle
y startActivity(intent)
.
Como eso:
Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("vidoedetails", filedetails);
//bundle.putString("videoname", filename);
intent.putExtras(bundle);
//intent.putExtra("videofilename", filename);
//intent.putExtra("vidoefiledetails", filedetails);
startActivity(intent);
Y en la clase B estoy usando dos TextView
para mostrar las cadenas de la clase A por separado.
Como eso:
Intent i = getIntent();
Bundle extras = i.getExtras();
filedetails = extras.getString("videodetails");
filename = extras.getString("videoname");
El problema es que filedetils
se imprime en la clase B pero no en el nombre del archivo.
¿Alguna solución para esto?
tienes un error tipográfico:
bundle.putString("vidoedetails", filedetails);
debiera ser
bundle.putString("videodetails", filedetails);
Sé que tengo 9 días de retraso en esta respuesta, pero este es un buen ejemplo de por qué creo una clase de constantes. Con una clase de constantes, no importa si está mal escrita ("video" -> "vidoe") porque estará "mal escrita" en ambos lugares cuando la referencia en una ubicación bien conocida.
Constants.java
public static String WELL_KNOWN_STRING "org.example..4792829";
Activity1.java
bundle.putString(Constants.WELL_KNOWN_STRING, filedetails);
Activity2.java
filedetails = extras.getString(Constants.WELL_KNOWN_STRING);
// First activity
actvty_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(v.getContext(),SECONDACTIVITY.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
});
/* This function gets the value from the other activity where we have passed a value on calling this activity */
public void activity_value() {
Intent i = getIntent();
Bundle extras=i.getExtras();
if(extras !=null) {
// This is necessary for the retrv_value
rtrv_value = extras.getString("key");
if(!(rtrv_value.isEmpty())) {
// It displays if the retrieved value is not equal to zero
myselection.setText("Your partner says = " + rtrv_value);
}
}
}
// Second activity
myBtn.setOnClickListener(new View.OnClickListener () {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), FIRSTACTIVITY.class);
Bundle bundle = new Bundle();
bundle.putString("key", txt1.getText().toString());
// Here key is just the "Reference Name" and txt1 is the EditText value
intent.putExtras(bundle);
startActivity(intent);
}
});
Aquí hay otra forma de pasar datos entre Actividades. Esto es solo un ejemplo de un tutorial que estaba siguiendo. Tengo una pantalla de presentación que se ejecuta durante 5 segundos y luego mataría el clip de sonido de:
@Override
protected void onPause() {
super.onPause();
ourSong.release();
}
Decidí que quería que el clip de sonido siguiera reproduciéndose en la siguiente actividad mientras seguía siendo capaz de matarlo / soltarlo desde allí, así que hice el clip de sonido, el objeto MediaPlayer, público y estático, similar a cómo en System.out es un objeto público estático Como soy nuevo en el desarrollo de Android pero no soy nuevo en el desarrollo de Java, lo hice de esta manera.
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
public class Splash extends Activity {
public static MediaPlayer ourSong; // <----- Created the object to be shared
// this way
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
ourSong = MediaPlayer.create(Splash.this, R.raw.dubstep);
ourSong.start();
Thread timer = new Thread() {
public void run() {
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
Intent openStartingPoint = new Intent(
"expectusafterlun.ch.androidtutorial.MENU");
startActivity(openStartingPoint);
}
}
};
timer.start();
}
}
Luego, desde la siguiente actividad, o cualquier otra actividad, pude acceder a ese objeto MediaPlayer.
public class Menu extends ListActivity {
String activities[] = { "Count", "TextPlay", "Email", "Camera", "example4",
"example5", "example6" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this,
android.R.layout.simple_expandable_list_item_1, activities));
}
@Override
protected void onPause() {
super.onPause();
Splash.ourSong.release(); // <----- Accessing data from another Activity
// here
}
}