什么是Android应用程序中的bundle
?何时使用它?
Bundles通常用于在不同的Android活动之间传递数据。您可以根据需要选择要传递的值类型,但bundles可以容纳所有类型的值并将它们传递到新的activity。
您可以像这样使用它:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
你可以通过以下方式获取传递的值:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
更多信息可以在以下链接中找到:
通过使用Bundle
对象和Intent
对象在活动之间传递数据。
首先创建一个Bundle
对象。
Bundle b = new Bundle();
那么,将存储在anystring
中的字符串数据与bundle键"myname"
相关联。
b.putString("myname", anystring);
现在,创建一个 Intent
对象
Intent in = new Intent(getApplicationContext(), secondActivity.class);
将 bundle 对象 b
传递到 intent 中。
in.putExtras(b);
并启动第二个活动
startActivity(in);
在第二个活动中,我们需要访问从第一个活动传递过来的数据。Intent in = getIntent();
现在,你需要从 bundle 中获取数据。
Bundle b = in.getExtras();
最后,获取与键名为"myname"
相关联的字符串数据的值。
String s = b.getString("myname");
我必须补充说明,Bundle 用于活动将数据传递给其未来的自身。
当屏幕旋转或启动另一个活动时,会调用方法 protected void onSaveInstanceState(Bundle outState)
,然后销毁该活动。稍后,将创建活动的另一个实例,并调用方法 public void onCreate(Bundle savedInstanceState)
。在第一个活动实例创建时,Bundle 为空;如果 Bundle 不为空,则活动将继续由其前任开始的某些业务。
Android 会自动保存文本字段中的文本,但它并不保存所有内容,有时会出现微妙的错误。
最常见的反模式是假设 onCreate()
只执行初始化。这是错误的,因为它还必须恢复状态。
有一种选项可以禁用此“旋转重新创建活动”行为,但它不会防止与重新启动相关的错误,只会使这些错误更难以察觉。
也请注意,唯一在活动即将被销毁时保证调用的方法是 onPause()
。(请参阅文档中的活动生命周期图表。)
更新:在Android中,“bundle”这个术语有两个完全不相关的含义。一个是在下面原始回答中详细介绍的含义,另一个是“应用程序包”(app bundle)。这是一种较新的档案文件格式(以.apk结尾),包含一个Android应用程序和一些附加元数据。您可以上传应用程序包文件而不是应用程序APK文件来通过Google Play分发应用。应用程序包比.apk文件具有某些优点,但可能不兼容其他应用商店(如Amazon App Store)。这些优点在原始回答中包含的文档链接中描述。
原始回答:
Bundle
非常类似于将String
键映射到值的Java Map
对象。它用于在活动和其他应用程序组件之间传递信息。框架还使用它来捕获和恢复状态信息。
Android之所以不使用普通的Map
对象是因为Map
太灵活了;它可能包含不能序列化的对象(例如I/O流)。Bundle
API以这样的方式限制可以添加到bundle中的对象类型,以确保bundle的内容可序列化。Android框架依赖于这个属性。
我建议您阅读有关应用程序基础知识的文档。这解释了bundles和intents是什么以及它们的用途。
通过意图(Intent)可以使用捆绑包(Bundle)将任意数据从一个活动(Activity)发送到另一个活动。当你广播一个意图时,感兴趣的活动(和其他广播接收器)将被通知。意图可以包含捆绑包,以便你可以发送额外的数据。
捆绑包是键值映射,因此在某种程度上它们类似于哈希表,但不严格限制于单个字符串/对象映射。请注意,只有特定的数据类型被认为是“可包裹的”,并且它们在捆绑包API中明确列出。
只需创建一个捆绑包,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
在"this_is_the_next_class.class"中
您可以像这样检索项目。
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
Bundle用于在Activity之间传递数据。您可以创建一个bundle,将其传递给启动目标Activity的Intent,然后在目标Activity中使用它。
Bundle: -
Bundle(捆绑包):是一种从字符串值到各种可序列化类型的映射。
Bundle 通常用于在 Android 的各个活动之间传递数据。
当我们调用 onPause() 方法时,系统会依次调用 onStop() 和 onPause() 方法。
保存的数据用于恢复先前状态的系统称为“实例状态”,它是存储在 Bundle 对象中的键值对集合。
bundle用于在活动之间共享数据,并在oncreate()方法中保存应用程序的状态,以便应用程序知道它停止的位置... 希望这有所帮助 :)
使用Bundle和Intent对象将数据从一个活动传递到另一个活动;
Bundle保存可以是任何类型的数据。
现在我告诉您如何创建Bundle以在两个活动之间传递数据。
步骤1:在第一个活动上
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
步骤2:在第二个活动中
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
我认为这对你很有用...........