什么是Android应用程序中的“包”

Android应用程序中的bundle是什么? 何时使用它?

Bundles通常用于在各种Android活动之间传递数据。 它取决于你想传递什么types的值,但bundle可以保存所有types的值,并将它们传递给新的活动。

你可以像这样使用它:

 Intent intent = new... Intent(getApplicationContext(), SecondActivity.class); intent.putExtra("myKey", AnyValue); startActivity(intent); 

您可以通过执行以下操作获取传递的值:

 Bundle extras = intent.getExtras(); String tmp = extras.getString("myKey"); 

你可以find更多的信息:

  • android-using-bundle-for-sharing-variables和

  • 假冒捆绑围绕头活动

我必须补充一下,活动使用bundle来将数据传递给自己。

当屏幕旋转时,或者当另一个活动开始时,调用protected void onSaveInstanceState(Bundle outState)方法,并且活动被破坏。 稍后,创build另一个活动实例,并调用public void onCreate(Bundle savedInstanceState) 。 当第一个活动实例被创build时,这个bundle是空的; 如果这个捆绑不是空的,那么这个活动将继续其前身开始的一些业务。

Android会自动将文本保存在文本字段中,但不会保存所有内容,有时会出现细微的错误。

然而,最常见的反模式是假定onCreate()只是初始化。 这是错误的,因为它也必须恢复状态。

有一个选项可以禁用这个“重新创build循环活动”的行为,但是不会阻止与重启有关的错误,这只会让他们更加难以提及。

还要注意的是,当活动将要被销毁的时候,保证调用的唯一方法是onPause() 。 (请参阅文档中的活动生命周期图)

通过使用BundleIntent对象在活动之间传递数据


你首先创build一个Bundle对象

 Bundle b = new Bundle(); 

然后,将存储在anystring中的string数据与捆绑键"myname"

 b.putString("myname", anystring); 

现在,创build一个Intent对象

 Intent in = new Intent(getApplicationContext(), secondActivity.class); 

将bundle对象b传递给intent

 in.putExtras(b); 

并开始第二个活动

 startActivity(in); 

在第二个活动中,我们必须访问从第一个活动传递的数据

 Intent in = getIntent(); 

现在,您需要从捆绑中获取数据

 Bundle b = in.getExtras(); 

最后,获取与名为"myname"键相关联的string数据的值

 String s = b.getString("myname"); 

Bundle非常类似于将String键映射到值的Java Map对象。 它用于在活动和其他应用程序组件之间传递信息。 它也被框架用来捕获和恢复状态信息。

Android不使用普通的旧Map对象的原因是Map太灵活了, 它可以包含无法序列化的对象(比如说,I / Ostream)。 Bundle API限制了可以添加到一个bundle的对象的types,使得bundle的内容保证是可序列化的。 Android框架依赖于这个属性。

我build议您阅读应用基础知识的文档。 除此之外,这解释了捆绑和意图是什么以及它们被用于什么目的。

Bundles可以用于通过Intents将任意数据从一个活动发送到另一个活动。 当您播放一个意图时,感兴趣的活动(和其他BroadcastRecievers)将被通知这一点。 一个意图可以包含一个Bundle,以便您可以发送额外的数据与意图。

Bundle是键值映射,所以它们就像一个Hash,但并不严格局限于一个String / Foo对象映射。 请注意,只有特定的数据types才被视为“Parcelable”,它们在Bundle API中被明确地拼写出来。

只要创build一个包,


 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用于在活动之间传递数据。 您可以创build一个捆绑包,将其传递给Intent,从而启动可从目标活动使用的活动。

Bundle:从String值到各种Parcelabletypes的映射。

Bundle通常用于在android的各种活动之间传递数据。

当我们调用onPause()然后onStop(),然后以相反的顺序onStop()onPause()。

系统用于恢复以前状态的已保存数据称为“实例状态”,是存储在Bundle对象中的键值对的集合。

bundle用于在活动之间共享数据,并在oncreate()方法中保存应用程序的状态,以便应用程序知道它停止的位置…我希望它有助于:)

包的使用借助于intent对象将数据从一个活动发送到另一个活动; Bundle保存可以是任何types的数据。

现在我告诉如何在两个活动之间创build数据包传递数据。

第1步:在第一个活动

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

我认为这对你有用………..

第一次活动:

 String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem(); RadioButton rb = (RadioButton) findViewById(R.id.rb); Intent i = new Intent(this,secondActivity.class); i.putExtra("food",food); i.putExtra("rb",rb.isChecked()); 

第二项活动:

 String food = getIntent().getExtras().getString("food"); Boolean rb = getIntent().getExtras().getBoolean("rb"); 

Bundle不仅仅是在两个不同的组件之间传输数据,更重要的是它被用来恢复在活动被破坏之前存储的值到新的活动中。

EditText小部件中的文本或ListView的滚动位置。