我有两个活动,例如Activity
A和B,我尝试使用Bundle
和startActivity(intent)
将两个不同的字符串从A传递到B.
就像那样:
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
来分别显示A类的字符串。
就像那样:
Intent i = getIntent();
Bundle extras = i.getExtras();
filedetails = extras.getString("videodetails");
filename = extras.getString("videoname");
问题是filedetils
在B类打印,但不是文件名。
对此有何解决方案?
答案 0 :(得分:18)
你有一个错字:
bundle.putString("vidoedetails", filedetails);
应该是
bundle.putString("videodetails", filedetails);
答案 1 :(得分:9)
我知道我在这个答案上迟了9天,但这是我创建常量类的一个很好的例子。使用常量类,如果它拼写错误(“视频” - >“vidoe”)并不重要,因为当您通过一个众所周知的位置引用它时,它将在两个地方“拼错”。
Constants.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);
答案 2 :(得分:2)
是的,你拼写错误的视频尾迹:
你的:vid * OE *详情
正确:vid * EO *详情
答案 3 :(得分:0)
// 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);
}
});
答案 4 :(得分:0)
这是在Activities之间传递数据的另一种方法。这只是我所遵循的教程中的一个示例。我有一个运行5秒钟的启动画面,然后它会从以下内容中删除声音剪辑:
@Override
protected void onPause() {
super.onPause();
ourSong.release();
}
我决定我希望声音片段继续播放到下一个活动,同时仍然可以从那里杀死/释放它,所以我制作了声音片段,MediaPlayer对象,公共和静态,类似于在System中的方式。 out是一个公共静态对象。作为Android开发人员的新手,但不是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
}
}