如何将数据从一个活动(意图)发送到另一个活动?
我使用此代码发送数据:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
答案 0 :(得分:1112)
首先,使用getIntent()
方法获取已启动活动的意图:
Intent intent = getIntent();
如果您的额外数据表示为字符串,则可以使用intent.getStringExtra(String name)
方法。在你的情况下:
String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
答案 1 :(得分:180)
在接收活动中
Bundle extras = getIntent().getExtras();
String userName;
if (extras != null) {
userName = extras.getString("name");
// and get whatever type user account id is
}
答案 2 :(得分:36)
// How to send value using intent from one class to another class
// class A(which will send data)
Intent theIntent = new Intent(this, B.class);
theIntent.putExtra("name", john);
startActivity(theIntent);
// How to get these values in another class
// Class B
Intent i= getIntent();
i.getStringExtra("name");
// if you log here i than you will get the value of i i.e. john
答案 3 :(得分:26)
String value = "Hello World!";
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("sample_name", value);
startActivity(intent);
String value;
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
value = bundle.getString("sample_name");
}
答案 4 :(得分:17)
而不是初始化另一个新的Intent来接收数据,而不是这样做:
String id = getIntent().getStringExtra("id");
答案 5 :(得分:11)
如果在FragmentActivity中使用,请尝试:
第一页扩展 FragmentActivity
Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);
在片段中,您只需先调用getActivity()
,
第二页扩展片段:
String receive = getActivity().getIntent().getExtras().getString("name");
答案 6 :(得分:7)
如果您尝试在片段中获取额外数据,则可以尝试使用:
使用以下方式放置数据:
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);
使用以下方式获取数据:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getArguments().getInt(ARG_SECTION_NUMBER);
getArguments().getString(ARG_SECTION_STRING);
getArguments().getBoolean(ARG_SECTION_BOOL);
getArguments().getChar(ARG_SECTION_CHAR);
getArguments().getByte(ARG_SECTION_DATA);
}
答案 7 :(得分:3)
您可以从意图获取任何类型的额外数据,无论它是对象,字符串还是任何类型的数据。
Bundle extra = getIntent().getExtras();
if (extra != null){
String str1 = (String) extra.get("obj"); // get a object
String str2 = extra.getString("string"); //get a string
}
最短的解决方案是:
Boolean isGranted = getIntent().getBooleanExtra("tag", false);
答案 8 :(得分:2)
第一个活动
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("key", "value")
startActivity(intent)
第二活动
val value = getIntent().getStringExtra("key")
建议
始终将密钥放置在常量文件中,以实现更多托管方式。
companion object {
val PUT_EXTRA_USER = "PUT_EXTRA_USER"
}
答案 9 :(得分:2)
**按意图放置数据-**
Intent intent = new Intent(mContext, HomeWorkReportActivity.class);
intent.putExtra("subjectName","Maths");
intent.putExtra("instituteId",22);
mContext.startActivity(intent);
**通过意图获取数据-**
String subName = getIntent().getStringExtra("subjectName");
int insId getIntent().getIntExtra("instituteId",0);
如果我们通过Intent发送整数值。当我们必须在 getIntent()。getIntExtra(“ instituteId”,0)中使用第二个参数0时,否则我们不使用0则android会给我错误。
答案 10 :(得分:1)
只是一个建议:
在i.putExtra(“id”.....)中使用“id”或“name”,我建议,当它有意义时,使用可以与putExtra一起使用的当前标准字段( ),即Intent.EXTRA_something。
可以在 Intent (Android开发者)找到完整列表。
答案 11 :(得分:1)
我们可以通过简单的方式来实现:
在FirstActivity中:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
在SecondActivity中:
try {
Intent intent = getIntent();
String uid = intent.getStringExtra("uid");
String pwd = intent.getStringExtra("pwd");
} catch (Exception e) {
e.printStackTrace();
Log.e("getStringExtra_EX", e + "");
}
答案 12 :(得分:1)
在“第一个活动”中传递具有价值的意图:
$(document).ready(function () {
$('.post').show();
$('.menu-item').find('input:checkbox').on('click', function () {
var post = $('.post').hide();
var elements = $('.menu-item').find('input:checked');
if(elements.length){
elements.each(function () {
post.filter('.' + this.id).show();
});
}
else
post.show();
});
});
接收第二个活动的意图;-
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
我们通常使用两种方法来发送值和获取值。
为了发送值,我们将使用Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");
,并且在接收其他活动的意图期间,我们将使用intent.putExtra("key", Value);
以intent.getStringExtra("key");
的形式获取意图数据,或使用其他可用方法来获取其他类型的数据({String
,Integer
等)。
键可以是任何关键字来标识值,表示您正在共享什么值。
希望它对您有用。
答案 13 :(得分:0)
你也可以这样做 //将值置于意图
Intent in = new Intent(MainActivity.this, Booked.class);
in.putExtra("filter", "Booked");
startActivity(in);
//从意图中获取价值
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String filter = bundle.getString("filter");
答案 14 :(得分:0)
要从Intent访问数据,您应该知道两件事。
Intent类中有不同的方法来提取不同类型的数据类型。 看起来像这样
getIntent()。XXXX(KEY)或intent.XXX(KEY);
因此,如果您知道在otherActivity中设置的varibale的数据类型,则可以使用相应的方法。
String profileName = getIntent().getStringExtra("SomeKey");
您可以在Intent的官方文档中查看可用方法列表。
答案 15 :(得分:0)
这适用于适配器,用于您只需要更改mContext的活动 对于您的Activty名称和片段,您需要将mContext更改为 getActivity()
export LD_LIBRARY_PATH=/path/openssl/lib
答案 16 :(得分:-2)
我刚刚发布了一个回答here,更详细地介绍了这个主题,包括一些替代方案。
它利用了Vapor API,这是我为简化Android开发而编写的一个新的jQuery启发的Android框架。查看该答案中的示例,了解如何在活动之间轻松传递数据。
它还演示了VaporIntent
,它允许您链接方法调用并使用重载的.put(...)
方法:
$.Intent().put("data", "myData").put("more", 568)...
您可以使用Vapor API轻松地在整个应用程序中传递数据,因此希望它在应用程序开发过程中对您和其他人有所帮助。