如何将一些数据转移到另一个片段同样,它是做了额外的意图?
当前回答
使用Bundle。这里有一个例子:
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);
Bundle为许多数据类型提供了方法。看到这个
然后在你的片段,检索数据(例如在onCreate()方法):
Bundle bundle = this.getArguments();
if (bundle != null) {
int myInt = bundle.getInt(key, defaultValue);
}
其他回答
使用Bundle。这里有一个例子:
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);
Bundle为许多数据类型提供了方法。看到这个
然后在你的片段,检索数据(例如在onCreate()方法):
Bundle bundle = this.getArguments();
if (bundle != null) {
int myInt = bundle.getInt(key, defaultValue);
}
只是扩展一下前面的答案——它可以帮助到一些人。如果你的getArguments()返回null,把它放在onCreate()方法,而不是你的片段的构造函数:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int index = getArguments().getInt("index");
}
getArguments()返回null因为“它没有得到任何东西”
试试这段代码来处理这种情况
if(getArguments()!=null)
{
int myInt = getArguments().getInt(key, defaultValue);
}
如果你正在使用kotlin,那么你可以传递bundle as
val fragment = YourFragment()
val bundle = Bundle().apply {
putInt("someInt", 5)
putString("someString", "Hello")
}
fragment.arguments = bundle
在YourFragment的onCreate中获取这些值
this.arguments?.let {
val someInt = it.getInt("someInt", someDefaultInt)
val someString = it.getString("someString", someDefaultString)
}
这是你使用bundle的方式:
Bundle b = new Bundle();
b.putInt("id", id);
Fragment frag= new Fragment();
frag.setArguments(b);
从bundle中检索值:
bundle = getArguments();
if (bundle != null) {
id = bundle.getInt("id");
}
推荐文章
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- 如何在新的材质主题中改变背面箭头的颜色?
- androidviewpager与底部点