Как получить данные от другой деятельности в android?
у меня есть два вида деятельности, такие как Activity
A и B, и я пытаюсь передать две разные строки из A В B, используя Bundle
и startActivity(intent)
.
вот так:
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);
и в классе B я использую два TextView
s для отображения строк из класса A отдельно.
вот так:
Intent i = getIntent();
Bundle extras = i.getExtras();
filedetails = extras.getString("videodetails");
filename = extras.getString("videoname");
проблема filedetils
печатается в классе B, но не имя файла.
любое решение для этого?
5 ответов
у вас опечатка:
bundle.putString("vidoedetails", filedetails);
должно быть
bundle.putString("videodetails", filedetails);
Я знаю, что я опоздал на 9 дней на этот ответ, но это хороший пример того, почему я создаю класс констант. С классом констант не имеет значения, если он написан с ошибкой ("видео" - > "vidoe"), потому что он будет "с ошибкой" в обоих местах, когда вы ссылаетесь на него через известное местоположение.
константы.java
public static String WELL_KNOWN_STRING "org.example.stackoverflow.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);
}
});
вот еще один способ передачи данных между мероприятиями. Это просто пример из учебника, которому я следовал. У меня есть заставка, которая работает в течение 5 секунд, а затем она убьет звуковой клип из:
@Override
protected void onPause() {
super.onPause();
ourSong.release();
}
я решил, что хочу, чтобы звуковой клип продолжал играть в следующую деятельность, все еще будучи в состоянии убить/освободить его оттуда, поэтому я сделал звуковой клип, объект MediaPlayer, публичный и статический, похожий на то, как в системе.out является общедоступным статическим объектом. Бытие новый для Android dev, но не новый для Java dev, я сделал это таким образом.
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();
}
}
затем из следующего действия или любого другого действия я мог получить доступ к этому объекту 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
}
}