使用Intent将数据从一个Activity传输到另一个Activity

时间:2011-02-11 10:06:12

标签: android android-intent

我希望能够将数据从一个活动转移到另一个活动。怎么办呢?

8 个答案:

答案 0 :(得分:28)

通过以下代码,我们可以在活动之间发送值

在父活动中使用以下代码

Intent myintent=new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value);
startActivity(myintent);

在儿童活动中使用以下代码

String s= getIntent().getStringExtra(<StringName>);

答案 1 :(得分:14)

您可以通过多种方式访问​​其他类或Activity中的变量或对象。

一个。数据库

B中。共享偏好。

℃。对象序列化。

d。可以保存公共数据的类可以命名为依赖于您的Common Utilities。

电子。通过Intents和Parcelable Interface传递数据。

这取决于您的项目需求。

一个。的数据库

SQLite是一个嵌入Android的开源数据库。 SQLite支持标准的关系数据库功能,如SQL语法,事务和预准备语句。

教程 - http://www.vogella.com/articles/AndroidSQLite/article.html

B中。 共享偏好设置

假设您要存储用户名。所以现在有两个东西是用户名,值。

如何存储

 // Create object of SharedPreferences.
 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
 //now get Editor
 SharedPreferences.Editor editor = sharedPref.edit();
 //put your value
 editor.putString("userName", "stackoverlow");

 //commits your edits
 editor.commit();

使用putString(),putBoolean(),putInt(),putFloat(),putLong()可以保存所需的dtatype。

如何获取

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String userName = sharedPref.getString("userName", "Not Available");

http://developer.android.com/reference/android/content/SharedPreferences.html

℃。 对象序列化

如果我们想要保存对象状态以通过网络发送它,或者您也可以将它用于您的目的,则使用对象serlization。

使用java bean并将其存储为其中一个字段,并使用getter和setter

JavaBeans是具有属性的Java类。考虑到 属性作为私有实例变量。因为他们是私人的,唯一的方法 可以通过类中的方法从类外部访问它们。该 更改属性值的方法称为setter方法和方法 检索属性的值称为getter方法。

public class VariableStorage implements Serializable  {

    private String inString ;

    public String getInString() {
        return inString;
    }

    public void setInString(String inString) {
        this.inString = inString;
    }


}

使用

在邮件方法中设置变量
VariableStorage variableStorage = new VariableStorage();
variableStorage.setInString(inString);

然后使用对象序列化来序列化此对象,并在其他类中反序列化此对象。

在序列化中,对象可以表示为包含对象数据的字节序列,以及有关对象类型和对象中存储的数据类型的信息。

将序列化对象写入文件后,可以从文件中读取并反序列化,即表示对象及其数据的类型信息和字节可用于在内存中重新创建对象。

如果您需要这方面的教程,请参阅此链接

http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html

Get variable in other classes

d。的 CommonUtilities

您可以自己创建一个课程,该课程可以包含您在项目中经常需要的常用数据。

<强>示例

public class CommonUtilities {

    public static String className = "CommonUtilities";

}

电子。 通过意图传递数据

请参阅本教程以了解传递数据的选项。

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

答案 2 :(得分:10)

将数据从一个活动传递到另一个活动时,执行此操作

在家长活动中:

startActivity(new Intent(presentActivity.this, NextActivity.class).putExtra("KEY_StringName",ValueData)); 

或类似于以下父项活动

Intent intent  = new Intent(presentActivity.this,NextActivity.class);     
intent.putExtra("KEY_StringName", name);   
intent.putExtra("KEY_StringName1", name1);   
startActivity(intent);

在儿童活动中执行如下所示

TextView tv = ((TextView)findViewById(R.id.textViewID))
tv.setText(getIntent().getStringExtra("KEY_StringName"));

或在子活动中显示如下所示

TextView tv = ((TextView)findViewById(R.id.textViewID));
TextView tv1 = ((TextView)findViewById(R.id.textViewID1))

/* Get values from Intent */
Intent intent = getIntent();         
String name  = intent.getStringExtra("KEY_StringName");
String name1  = intent.getStringExtra("KEY_StringName1");

tv.setText(name);
tv.setText(name1);

答案 3 :(得分:1)

将数据从一个活动传递到Android中的其他活动

Intent intent = new Intent(context, YourActivityClass.class);
intent.putExtra(KEY, <your value here>);

startActivity(intent);

从Android活动中检索捆绑数据

Intent intent = getIntent();
  if (intent!=null) {
  String stringData= intent.getStringExtra(KEY);
  int numberData = intent.getIntExtra(KEY, defaultValue);
  boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
  char charData = intent.getCharExtra(KEY, defaultValue);   }

答案 4 :(得分:0)

希望你能从这里找到答案Send Data to Another Activity - Simple Android Login

答案 5 :(得分:0)

你只需要在调用你的意图时发送额外内容

像这样:

Intent intent = new Intent(getApplicationContext(),SecondActivity.class); intent.putExtra(&#34;变量名称&#34;,&#34;您希望传递的值&#34;); startActivity(意向);

现在,在SecondActivity的OnCreate方法中,您可以像这样获取额外内容

如果您发送的值是&#34; long&#34;

long value = getIntent()。getLongExtra(&#34;你作为额外发送的变量名&#34;,defaultValue(你可以给它任何东西));

如果您发送的值是&#34;字符串&#34;

String value = getIntent()。getStringExtra(&#34;您作为额外&#34发送的变量名称;);

如果你发送的值是&#34;布尔&#34;

布尔值= getIntent()。getStringExtra(&#34;您作为额外&#34;,defaultValue发送的变量名称);

答案 6 :(得分:0)

您的目的

假设您想要从活动A转到活动B

所以我们使用Intent来切换活动

Activity Switch

典型代码看起来像这样 -

在活动A [A.class]

//// Create a New Intent object
Intent i = new Intent(getApplicationContext(), B.class);

/// add what you want to pass from activity A to Activity B
i.putExtra("key", "value");

/// start the intent
startActivity(i);

在活动B [B.class]

儿童活动

获取数据
Intent i = getIntent();

if (i!=null) {
   String stringData= i.getStringExtra("key");
}

答案 7 :(得分:0)

这效果最好:

通过以下代码,我们可以在活动之间发送值

在父活动(父母课程/价值发送课程)中使用以下代码

Intent myintent=new Intent(<PARENTCLASSNAMEHERE>.this,<TARGETCLASSNAMEHERE>.class).putExtra("<StringName>", value);
startActivity(myintent);

在儿童活动中使用以下代码(TARGET CLASS / ACTIVITY)

String s= getIntent().getStringExtra(<StringName>);

请在此处看到&#34; StringName&#34;是&#34;值&#34;是目的地/子活动捕获的名称。是变量名,与父/目标/发送类相同。