3 回答
TA贡献1872条经验 获得超3个赞
捆绑包通常用于在各种Android活动之间传递数据。这取决于您要传递的值的类型,但bundle可以包含所有类型的值并将它们传递给新活动。
你可以像这样使用它:
Intent intent = new...Intent(getApplicationContext(), SecondActivity.class);intent.putExtra("myKey", AnyValue); startActivity(intent);
您可以通过执行以下操作获取传递的值:
Bundle extras = intent.getExtras(); String tmp = extras.getString("myKey");
您可以在以下位置找到更多信息
TA贡献1826条经验 获得超6个赞
通过使用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 b = in.getExtras();
最后,获取与key命名关联的字符串数据的值 "myname"
String s = b.getString("myname");
TA贡献1848条经验 获得超6个赞
我必须补充一点,活动使用bundle来将数据传递给自己。
当屏幕旋转或启动另一个活动时,将protected void onSaveInstanceState(Bundle outState)
调用该方法,并销毁活动。稍后,将创建另一个活动实例,并public void onCreate(Bundle savedInstanceState)
进行调用。创建第一个活动实例时,该包为空; 如果bundle不为null,则活动将继续由其前身启动的某些业务。
Android会自动将文本保存在文本字段中,但它不会保存所有内容,并且有时会出现细微的错误。
但是,最常见的反模式假设onCreate()
只是初始化。这是错误的,因为它也必须恢复状态。
有一个选项可以禁用这种“重新创建旋转活动”行为,但它不会阻止与重启相关的错误,它只会使它们更难以提及。
另请注意,当活动将被销毁时,唯一可以保证其调用的方法是onPause()
。(请参阅文档中的活动生命周期图。)
- 3 回答
- 0 关注
- 530 浏览
添加回答
举报