如何将数据从一个活动(意图)发送到另一个活动?

我使用此代码发送数据:

Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);

当前回答

科特林

第一项活动

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"
}

其他回答

科特林

第一项活动

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"
}

首先,使用getIntent()方法获取开始活动的意图:

Intent intent = getIntent();

如果额外的数据表示为字符串,则可以使用intent.getStringExtra(字符串名称)方法。在您的案例中:

String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");

在接收活动中

Bundle extras = getIntent().getExtras(); 
String userName;

if (extras != null) {
    userName = extras.getString("name");
    // and get whatever type user account id is
}

如果在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");

您可以从intent中获取任何类型的额外数据,无论是对象、字符串还是任何类型的数据。

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);