Android应用程序中的捆绑包是什么?什么时候使用?
当前回答
使用bundle在intent对象的帮助下将数据从一个活动发送到另一个活动; 捆绑包保存可以是任何类型的数据。
现在我告诉它如何创建在两个活动之间传递数据的bundle。
第一步:第一个活动
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
第二步:第二项活动
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
我认为这对你很有用...........
其他回答
我必须补充的是,bundle被活动用来在将来将数据传递给自己。
当屏幕旋转时,或者当另一个活动启动时,方法protected void onSaveInstanceState(Bundle outState)被调用,并且活动被销毁。稍后,创建该活动的另一个实例,并调用公共void onCreate(Bundle savedInstanceState)。当activity的第一个实例被创建时,bundle是空的;如果bundle不为空,活动将继续由它的前任开始的一些业务。
Android会自动将文本保存在文本框中,但它不会保存所有内容,有时会出现一些微妙的错误。
不过,最常见的反模式是假设onCreate()只进行初始化。这是错误的,因为它也必须恢复国家。
有一个选项可以禁用这种“在旋转时重新创建活动”的行为,但它不能防止与重启相关的错误,只会使它们更难被提及。
还要注意,当activity将要被销毁时,唯一保证调用的方法是onPause()。(请参阅文档中的活动生命周期图。)
捆绑包通常用于在各种Android活动之间传递数据。这取决于你想传递什么类型的值,但是包可以保存所有类型的值并将它们传递给新活动。
你可以这样使用它:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
你可以通过这样做来获取传递的值:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
你可以在这里找到更多信息:
android-using-bundle-for-sharing-variables和 Passing-Bundles-Around-Activities
Bundle用于在活动之间共享数据, 在oncreate()方法中保存应用程序的状态,这样应用程序就会知道它在哪里停止了… 我希望它能帮助你:)
Update: When it comes to Android, there are two completely unrelated meanings to the term "bundle". One is detailed in my original answer below. The other is an app bundle. This is a newer archive file format (ending in .aap) that contains an Android app plus some additional metadata. You can upload an app bundle file instead of an application APK file to distribute your app through Google Play. App bundles have certain advantages over .apk files, but may not be compatible with other app stores (such as the Amazon App Store). These advantages are described in the documentation link included in my original answer.
最初的回答:
Bundle非常类似于将字符串键映射到值的Java Map对象。它用于在活动和其他应用程序组件之间传递信息。框架还使用它来捕获和恢复状态信息。
Android不使用普通的旧Map对象的原因是Map太灵活了;它可以包含不能序列化的对象(例如I/O流)。Bundle API限制了可以添加到Bundle中的对象类型,以保证Bundle的内容是可序列化的。Android框架依赖于这个属性。
我建议您阅读有关应用程序基础的文档。这解释了什么是捆绑包和意图,以及它们的用途。
只需要创建一个bundle,
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);
推荐文章
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE
- 如何更改android操作栏的标题和图标
- Android Split字符串
- 让一个链接在安卓浏览器启动我的应用程序?
- 如何在Android工作室的外部库中添加一个jar ?
- GridLayout(不是GridView)如何均匀地拉伸所有子元素
- 如何让一个片段删除自己,即它的等效完成()?