如何在Android中将一个Activity的值传递给另一个Activity?

我用AutuCompleteTextView [ACTV]和button创build了一个Activity。 我在ACTV中input一些文字,然后按下button。 我按下button后,我希望活动转到另一个活动。 在第二个活动中,我只想将在ACTV(第一个活动)中input的文本显示为TextView。

我知道如何开始第二个活动,如下所示:

Intent i = new Intent(this, ActivityTwo.class); startActivity(i); 

我已经编码,以获得从ACTVinput的文字。

 AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete); CharSequence getrec=textView.getText(); 

我的问题是如何从第一个活动传递“getrec”(按下button之后)到第二个活动。 后来在第二个活动中收到“getrec”。

请假定我已经使用“onClick(View v)”为button创build了事件处理程序类

Solutions Collecting From Web of "如何在Android中将一个Activity的值传递给另一个Activity?"

您可以使用Bundle在Android中执行相同的操作

创build意图:

 Intent i = new Intent(this, ActivityTwo.class); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete); String getrec=textView.getText().toString(); //Create the bundle Bundle bundle = new Bundle(); //Add your data to bundle bundle.putString(“stuff”, getrec); //Add the bundle to the intent i.putExtras(bundle); //Fire that second activity startActivity(i); 

现在在第二个活动中从包中检索数据:

 //Get the bundle Bundle bundle = getIntent().getExtras(); //Extract the data… String stuff = bundle.getString(“stuff”); 

将数据从一个活动传递到另一个活动的标准方式:

如果你想从一个活动发送大量的数据到另一个活动,那么你可以把数据放在一个包中,然后使用putExtra()方法传递它。

 //Create the `intent` Intent i = new Intent(this, ActivityTwo.class); String one="xxxxxxxxxxxxxxx"; String two="xxxxxxxxxxxxxxxxxxxxx"; //Create the bundle Bundle bundle = new Bundle(); //Add your data to bundle bundle.putString(“ONE”, one); bundle.putString(“TWO”, two); //Add the bundle to the intent i.putExtras(bundle); //Fire that second activity startActivity(i); 

否则可以直接使用putExtra()来发送数据,使用getExtra()来获取数据。

 Intent i=new Intent(this, ActivityTwo.class); i.putExtra("One",one); i.putExtra("Two",two); startActivity(i); 

这很简单,使用Intent.putExtra将数据传递给您开始的活动。 然后使用Bundle.getExtra来检索它。

有很多这样的问题已经https://stackoverflow.com/search?q=How+to+pass+a+value+from+one+Activity+to+another+in+Android一定要使用search第一次。

以这种方式实施

 String i="hi"; Intent i = new Intent(this, ActivityTwo.class); //Create the bundle Bundle b = new Bundle(); //Add your data to bundle b.putString(“stuff”, i); i.putExtras(b); startActivity(i); 

开始第二个activity ,在这个class内部使用Bundle值来使用这个代码

 Bundle bundle = getIntent().getExtras(); String text= bundle.getString("stuff"); 

我知道这是迟到了,但如果variables需要跨多个意图访问和修改,最简单的方法是使用单例方式。 定义一个全局variables,所有的意图都可以访问。

它的简单如果你将stringX从A传递给B.
A – > B

在活动A
1)创build意图
2)使用意图的putExtra方法意图的数据
3)开始活动

 Intent i = new Intent(A.this, B.class); i.putExtra("MY_kEY",X); 

在活动B中
里面的onCreate方法
1)获取意图对象
2)使用键(MY_KEY)获取存储值

 Intent intent = getIntent(); String result = intent.getStringExtra("MY_KEY"); 

这是将数据从A发送到B的标准方式,您可以发送任何数据types,可以是int,boolean,ArrayList,String []。 根据您存储在Activity中的数据types作为键,值对检索方法可能会有所不同,如果您传递的是int值,则您将调用

 intent.getIntExtra("KEY"); 

你甚至可以发送Class对象,但是你必须使你的类对象实现Serialzable或Parceable交互。

TransactionTooLargeException

您可以发送多less数据大小。 如果数据超过一定的数量,那么你可能会得到TransactionTooLargeException。 假设您正在尝试在整个活动中发送位图,并且如果大小超过了某个数据大小,则可能会看到此exception。