我想要能够在一个Activity和另一个Activity之间传输数据。这应该如何实现呢?
我想要能够在一个Activity和另一个Activity之间传输数据。这应该如何实现呢?
通过下面的代码,我们可以在不同活动之间传递数值。
在父活动中使用以下代码:
Intent myintent=new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value);
startActivity(myintent);
在子活动中使用下面的代码
String s= getIntent().getStringExtra(<StringName>);
String s= getIntent().getStringExtra("StringName");
放入子活动中是有效的。 - CHarris有几种方法可以访问其他类或活动中的变量或对象。
A. 数据库
B. 共享偏好设置。
C. 对象序列化。
D. 可以命名为Common Utilities的保存公共数据的类,这取决于您。
E. 通过Intents和Parcelable接口传递数据。
它取决于您的项目需求。
A. 数据库
SQLite是嵌入到Android中的开源数据库。 SQLite支持标准的关系型数据库功能,如SQL语法、事务和预处理语句。
教程-- http://www.vogella.com/articles/AndroidSQLite/article.html
B. 共享偏好设置
假设您想要存储用户名。那么现在将有两个东西,一个Key用户名,Value值。
如何存储
// 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();
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String userName = sharedPref.getString("userName", "Not Available");
http://developer.android.com/reference/android/content/SharedPreferences.html
C. 对象序列化
如果我们想要保存一个对象的状态以便于在网络中传输,或者您也可以将其用于自己的目的,那么就需要使用对象序列化。
使用JavaBeans并将其存储为其中一个字段,然后使用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
D. CommonUtilities
您可以自己创建一个类,其中包含您在项目中经常需要的公共数据。
示例
public class CommonUtilities {
public static String className = "CommonUtilities";
}
E. 通过意图传递数据
请参考本教程以了解通过意图传递数据的选项。
当你需要从一个活动传递数据到另一个活动时,请按照以下步骤执行:
在父活动中:
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);
Intent intent = new Intent(context, YourActivityClass.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);
从Android活动中检索bundle数据
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); }
这是最好的方法:
通过下面的代码,我们可以在活动之间发送值
在父活动(父类/值发送类)中使用以下代码
Intent myintent=new Intent(<PARENTCLASSNAMEHERE>.this,<TARGETCLASSNAMEHERE>.class).putExtra("<StringName>", value);
startActivity(myintent);
在子活动(目标类/活动)中使用以下代码
String s= getIntent().getStringExtra(<StringName>);
假设你想从活动 A 跳转到活动 B。
所以我们使用 Intent 来切换活动。
典型的代码看起来像这样 -
//// 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);
从子活动获取数据
Intent i = getIntent();
if (i!=null) {
String stringData= i.getStringExtra("key");
}
希望您能从这里找到答案 将数据发送到另一个活动 - 简单的Android登录
在调用您的意图时,您只需发送额外的内容
像这样:
Intent intent = new Intent(getApplicationContext(), SecondActivity.class); intent.putExtra("变量名称", "要传递的值"); startActivity(intent);
现在,在您的SecondActivity的OnCreate方法中,您可以像这样获取额外的内容
如果您发送的值是“long”类型
long value = getIntent().getLongExtra("作为额外发送的变量名称", defaultValue(您可以随便给它一个值));
如果您发送的值是“String”类型
String value = getIntent().getStringExtra("作为额外发送的变量名称");
如果您发送的值是“Boolean”类型
Boolean value = getIntent().getStringExtra("作为额外发送的变量名称", defaultValue);