Android应用程序中的捆绑包是什么?什么时候使用?


当前回答

第一个活动:

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和Intent对象在活动之间传递数据。


首先创建一个Bundle对象

Bundle b = new Bundle();

然后,将存储在anystring中的字符串数据与bundle key "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 b = in.getExtras();

最后,获取与名为"myname"的键相关的字符串数据的值

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

使用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,


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被活动用来在将来将数据传递给自己。

当屏幕旋转时,或者当另一个活动启动时,方法protected void onSaveInstanceState(Bundle outState)被调用,并且活动被销毁。稍后,创建该活动的另一个实例,并调用公共void onCreate(Bundle savedInstanceState)。当activity的第一个实例被创建时,bundle是空的;如果bundle不为空,活动将继续由它的前任开始的一些业务。

Android会自动将文本保存在文本框中,但它不会保存所有内容,有时会出现一些微妙的错误。

不过,最常见的反模式是假设onCreate()只进行初始化。这是错误的,因为它也必须恢复国家。

有一个选项可以禁用这种“在旋转时重新创建活动”的行为,但它不能防止与重启相关的错误,只会使它们更难被提及。

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

Bundle不仅用于在两个不同的组件之间传输数据,更重要的是用于恢复在activity被销毁为新activity之前存储的值。

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