在 startActivity() 上传递一个 Bundle?

Posted

技术标签:

【中文标题】在 startActivity() 上传递一个 Bundle?【英文标题】:Passing a Bundle on startActivity()? 【发布时间】:2010-10-20 14:49:10 【问题描述】:

将捆绑包传递给从当前活动启动的活动的正确方法是什么?共享属性?

【问题讨论】:

【参考方案1】:

你有几个选择:

1) 使用来自Intent 的Bundle:

Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value);  

2) 创建一个新的捆绑包

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);

3)使用Intent的putExtra()快捷方式

Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);

然后,在启动的 Activity 中,您可以通过以下方式阅读它们:

String value = getIntent().getExtras().getString(key)

注意: Bundle 对所有原始类型、Parcelable 和 Serializable 都有“get”和“put”方法。我只是将字符串用于演示目的。

【讨论】:

【参考方案2】:

您可以使用 Intent 中的 Bundle:

Bundle extras = myIntent.getExtras();
extras.put*(info);

或整个捆绑包:

myIntent.putExtras(myBundle);

这是你要找的吗?

【讨论】:

然后从生成的意图中调用 getIntent().getExtras().get*() 来获取之前存储的内容。【参考方案3】:

将数据从一个 Activity 传递到 android 中的 Activity

意图包含操作和可选的附加数据。可以使用意图putExtra() 方法将数据传递给其他活动。数据作为附加值传递,为key/value pairs。键始终是字符串。作为值,您可以使用原始数据类型 int、float、chars 等。我们还可以将 Parceable and Serializable 对象从一个活动传递到另一个活动。

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

从 android 活动中检索捆绑数据

您可以使用 Intent 对象上的 getData() 方法检索信息。 Intent 对象可以通过 getIntent() 方法检索。

 Intent intent = getIntent();
  if (null != intent)  //Null Checking
    String StrData= intent.getStringExtra(KEY);
    int NoOfData = intent.getIntExtra(KEY, defaultValue);
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
    char charData = intent.getCharExtra(KEY, defaultValue); 
  

【讨论】:

【参考方案4】:

您可以使用 Bundle 将值从一个活动传递到另一个活动。在您当前的活动中,创建一个捆绑包并为特定值设置捆绑包并将该捆绑包传递给意图。

Intent intent = new Intent(this,NewActivity.class);
Bundle bundle = new Bundle();
bundle.putString(key,value);
intent.putExtras(bundle);
startActivity(intent);

现在在您的 NewActivity 中,您可以获取此捆绑包并检索您的价值。

Bundle bundle = getArguments();
String value = bundle.getString(key);

您还可以通过意图传递数据。在您当前的活动中,像这样设置意图,

Intent intent = new Intent(this,NewActivity.class);
intent.putExtra(key,value);
startActivity(intent);

现在在您的 NewActivity 中,您可以像这样从意图中获取该值,

String value = getIntent().getExtras().getString(key);

【讨论】:

为什么在意图对象具有 getExtra 和 putExtra 方法时使用捆绑包?【参考方案5】:

写下这是你正在进行的活动:

Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
intent.putExtras("string_name","string_to_pass");
startActivity(intent);

在 NextActivity.java 中

Intent getIntent = getIntent();
//call a TextView object to set the string to
TextView text = (TextView)findViewById(R.id.textview_id);
text.setText(getIntent.getStringExtra("string_name"));

这对我有用,你可以试试。

来源:https://www.c-sharpcorner.com/article/how-to-send-the-data-one-activity-to-another-activity-in-android-application/

【讨论】:

以上是关于在 startActivity() 上传递一个 Bundle?的主要内容,如果未能解决你的问题,请参考以下文章

不同Activity之间传递线程

应用程序在“startActivity(intent);”上崩溃[复制]

Android activity之间的跳转和数据传递

Android - ActivityUnitTestCase 测试类中 startActivity 方法上的 AssertionFailedError

android怎么返回上一个Activity啊?

Android startactivity 冻结应用