如何在Android中将值从一个Activity传递到另一个Activity?

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

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

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

我编写了这个来获取从ACTV输入的文本。

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

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

请假设我已使用“onClick(View v)”为按钮创建了事件处理程序类

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

你可以使用Bundle在Android中做同样的事情

创建意图:

 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请务必先用下次搜索。

以这种方式实施

 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 ,在此类中使用Bundle值使用此代码

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

它很简单如果你将字符串X从A传递给B.
A – > B.

在活动A中
1)创建意图
2)使用putExtra intent方法将数据置于intent中
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

您可以跨大小发送多少数据。 如果数据大小超过一定数量,那么您可能会得到TransactionTooLargeException。 假设您尝试在活动中发送位图,如果大小超过某个数据大小,那么您可能会看到此exception。

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