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

我使用此代码发送数据:

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

当前回答

在接收活动中

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

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

其他回答

加起来

设置数据

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

如果在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访问数据,您应该知道两件事。

钥匙数据的DataType。

Intent类中有不同的方法来提取不同类型的数据。看起来像这样

getIntent().XXX(KEY)或intent.XXX(KEY);

因此,如果您知道在otherActivity中设置的变量的数据类型,则可以使用相应的方法。

从Intent检索活动中的字符串的示例

String profileName = getIntent().getStringExtra("SomeKey");

不同数据类型的方法的不同变体列表

您可以在意向正式文档中查看可用方法列表。

您可以从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);

你也可以这样做//将价值放在意图上

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